入門
安裝fastapi 和ASGI 伺服器(例如uvicorn):確保您使用的是Python 3.6.7 如果pip 和
python 給您python 2版本,則可能必須使用
pip3 和
python3 。另外,請查看我關於python入門的文章。
pip install fastapi uvicorn並在
main.py檔案中新增舊的「 hello world」:
from fastapi import FastAPI app = FastAPI() @app.get("/") def home(): return {"Hello": "World"}
運行開發##然後運行以進行開發,可以運行
uvicorn main:app --reload這就是簡單伺服器要做的全部!現在您可以檢查 //localhost:8000/ 以查看「主頁」。而且,如您所見,JSON響應“正常工作”!您也可以透過 //localhost:8000/docs 免費取得Swagger UI。
如前所述,很容易驗證資料(並為接受的資料格式產生Swagger文件)。只需從fastapi新增
Query匯入,然後使用它來強制驗證:<pre class="brush:php;toolbar:false">from fastapi import FastAPI, Query
@app.get('/user')
async def user(
*,
user_id: int = Query(..., title="The ID of the user to get", gt=0)
):
return { 'user_id': user_id }</pre>
第一個參數
是預設值,如果使用者不提供值則提供該預設值。如果設定為None
,則沒有預設值,且該參數是可選的。為了沒有預設值且該參數是強制性的,請使用Ellipsis ,或...
取代。 如果執行此程式碼,則會在swagger UI上自動看到更新:
#Swagger UI可讓您查看新的/ user路由並使用特定的使用者ID進行要求
如果您輸入任何使用者ID,您會看到它會自動為您執行要求,例如 //localhost:8000/user?user_id=1。在頁面中,您只能看到回顯了使用者ID!
如果要改為使用路徑參數(使其為
/user/1,則只需輸入並使用Path
而不是Query
。也可以結合兩者Post 路線
如果您有
POST路由,則只需定義輸入即可<pre class="brush:php;toolbar:false">@app.post('/user/update')
async def update_user(
*,
user_id: int,
really_update: int = Query(...)
):
pass</pre>
在這種情況下,您可以看到
僅被定義為一個沒有Query
或Path
的整數;這表示它將在POST請求正文中。如果您接受更複雜的資料結構,例如JSON數據,則應研究請求模型。
您可以使用Pydantic模型記錄並聲明詳細的請求和回應模型。這不僅可以讓您擁有所有模型的自動OpenAPI文檔,還可以驗證請求模型和響應模型,以確保輸入的任何POST資料都是正確的,並且返回的資料也符合該模型。
只需像這樣聲明模型:
from pydantic import BaseModel class User(BaseModel): id:: int name: str email: str
然後,如果您希望將使用者模型作為輸入,則可以執行以下操作:
async def update_user(*, user: User): pass
或者,如果您要將其用作輸出:
@app.get('/user') async def user( *, user_id: int = Query(..., title="The ID of the user to get", gt=0), response_model=User ): my_user = get_user(user_id) return my_user路由和分解更大的API
您可以使用
APIRouter將api分解為路由。例如,我已經在我的API 中找到了這個app / routers / v1 / __ init __。py
<pre class="brush:php;toolbar:false">from fastapi import APIRouter
from .user import router as user_router
router = APIRouter()
router.include_router(
user_router,
prefix='/user',
tags=['users'],
)</pre>
然後您可以在
中使用上面的使用者代碼-只需導入APIRouter
並使用@ router.get('/')
而不是@ app.get(' / user')
。它會自動路由到/ user /
,因為該路由是相對於前綴的。<pre class="brush:php;toolbar:false">from fastapi import APIRouter
router = APIRouter()
@router.get('/')
async def user(
*,
user_id: int = Query(..., title="The ID of the user to get", gt=0),
response_model=User
):
my_user = get_user(user_id)
return my_user</pre>
最後,要在應用程式中使用所有
路由器,只需將main.py
編輯為:<pre class="brush:php;toolbar:false">from fastapi import FastAPI
from app.routers import v1
app = FastAPI()
app.include_router(
v1.router,
prefix="/api/v1"
)</pre>
您可以透過這種方式隨意連結路由器,從而允許您拆分大型應用程式並擁有版本化的API。
Fastapi 的作者使出乎意料的輕鬆之一就是Dockerizing!預設的
Dockerfile是2行!<pre class="brush:php;toolbar:false">FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7
COPY ./app /app</pre>
<p>是否想通过自动重新加载进行 Dockerize 开发?这是我在撰写文件中使用的秘方:</p>
<pre class="brush:php;toolbar:false">version: "3"
services:
test-api:
build: ..
entrypoint: '/start-reload.sh'
ports:
- 8080:80
volumes:
- ./:/app</pre>
<p>这会将当前目录挂载为<code>app
并将在任何更改时自动重新加载。您可能还想将app / app
用于更大的应用程序。
有用的网址
所有这些信息都来自 Fastapi网站,该文档具有出色的文档,我鼓励您阅读。此外,作者在 Gitter 上非常活跃并乐于助人!
结论
就是这样-我希望本指南对您有所帮助,并且您会像我一样喜欢使用 Fastapi。
推荐教程:Python教程
以上是Python 快速使用 REST API的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

選擇Python還是C 取決於項目需求:1)如果需要快速開發、數據處理和原型設計,選擇Python;2)如果需要高性能、低延遲和接近硬件的控制,選擇C 。

通過每天投入2小時的Python學習,可以有效提升編程技能。 1.學習新知識:閱讀文檔或觀看教程。 2.實踐:編寫代碼和完成練習。 3.複習:鞏固所學內容。 4.項目實踐:應用所學於實際項目中。這樣的結構化學習計劃能幫助你係統掌握Python並實現職業目標。

在兩小時內高效學習Python的方法包括:1.回顧基礎知識,確保熟悉Python的安裝和基本語法;2.理解Python的核心概念,如變量、列表、函數等;3.通過使用示例掌握基本和高級用法;4.學習常見錯誤與調試技巧;5.應用性能優化與最佳實踐,如使用列表推導式和遵循PEP8風格指南。

Python適合初學者和數據科學,C 適用於系統編程和遊戲開發。 1.Python簡潔易用,適用於數據科學和Web開發。 2.C 提供高性能和控制力,適用於遊戲開發和系統編程。選擇應基於項目需求和個人興趣。

Python更適合數據科學和快速開發,C 更適合高性能和系統編程。 1.Python語法簡潔,易於學習,適用於數據處理和科學計算。 2.C 語法複雜,但性能優越,常用於遊戲開發和系統編程。

每天投入兩小時學習Python是可行的。 1.學習新知識:用一小時學習新概念,如列表和字典。 2.實踐和練習:用一小時進行編程練習,如編寫小程序。通過合理規劃和堅持不懈,你可以在短時間內掌握Python的核心概念。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

記事本++7.3.1
好用且免費的程式碼編輯器