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