Jak používat FastAPI k vytváření vysoce výkonných API služeb
Jak používat FastAPI k vytváření vysoce výkonných API služeb
FastAPI je moderní, rychlý (efektivní) webový rámec, navržený speciálně pro vytváření API. Je založen na typech Pythonu a podporuje asynchronní programování, což umožňuje vývojářům vytvářet vysoce výkonné, vysoce dostupné API služby s nízkou latencí. Tento článek vám podrobně ukáže, jak používat FastAPI k vytváření vysoce výkonných API služeb, a to krok za krokem, abychom vám pomohli realizovat celý proces od nastavení prostředí až po nasazení.
Krok 1: Příprava prostředí
Musíte se ujistit, že máte ve svém vývojovém prostředí nainstalovaný Python 3.6+. Pokud ještě není nainstalován, můžete navštívit oficiální stránky Pythonu a stáhnout a nainstalovat jej.
Instalace FastAPI a Uvicorn
FastAPI samo o sobě neposkytuje služby, potřebuje ASGI server k hostování. Zde používáme Uvicorn, vysoce výkonný ASGI server. Můžete použít následující příkaz k instalaci FastAPI a Uvicorn:
pip install fastapi uvicorn
Krok 2: Vytvoření základního API
Vytvořme jednoduchou aplikaci FastAPI.
Vytvoření souboru aplikace
Ve svém projektovém adresáři vytvořte Python soubor, například main.py, a poté do něj napište následující kód:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Ahoj, světe!"}
V uvedeném kódu nejprve importujeme FastAPI a vytvoříme instanci app. Poté definujeme GET trasu, která při přístupu na kořenovou cestu / vrátí jednoduchou JSON odpověď.
Spuštění serveru
Spusťte svůj FastAPI server pomocí následujícího příkazu:
uvicorn main:app --reload
main: odkazuje na název souboru bez přípony .py.app: odkazuje na instanci FastAPI.--reload: v režimu vývoje automaticky restartuje server při změně souboru.
Krok 3: Definování tras a datových modelů
Pro vytvoření složitějšího API musíte použít Pydantic k definování datových modelů.
Vytvoření datového modelu
Do main.py přidejte následující obsah:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_available: bool = True
Tento kód používá Pydantic k vytvoření datového modelu Item, který obsahuje tři vlastnosti: název produktu, cenu a dostupnost.
Přidání nové trasy
Nyní můžeme definovat novou POST trasu pro příjem dat typu Item:
@app.post("/items/")
async def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
V této trase FastAPI automaticky ověří přijatá data a mapuje je na model Item.
Krok 4: Automatické generování dokumentace
Jednou z největších výhod FastAPI je, že může automaticky generovat dokumentaci API. Můžete ji zobrazit přístupem na následující adresy:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
V těchto vygenerovaných dokumentech můžete interaktivně testovat API a prohlížet si formáty požadavků a odpovědí pro každou trasu.
Krok 5: Přidání ověřování
V reálných aplikacích je ověřování důležitým krokem. Přidejme jednoduché ověřování na základě rolí.
Přidání bezpečnostních závislostí
Použijte metodu Depends FastAPI a OAuth2PasswordBearer k implementaci ověřování:
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
async def fake_decode_token(token):
return {"sub": token}
async def get_current_user(token: str = Depends(oauth2_scheme)):
user = fake_decode_token(token)
if user is None:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Neplatné ověřovací údaje")
return user
Ochrana tras
Poté můžete přidat ověřování do tras, které potřebujete chránit:
@app.get("/users/me")
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
Krok 6: Nasazení aplikace FastAPI
Jakmile dokončíte vývoj, možná budete chtít nasadit aplikaci na cloudový server. Můžete zvolit nasazení pomocí Dockeru.
Vytvoření Dockerfile
V projektovém adresáři vytvořte soubor s názvem Dockerfile a zadejte následující obsah:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
COPY ./app /app
Vytvoření Docker obrazu
Ve svém terminálu použijte následující příkaz k vytvoření Docker obrazu:
docker build -t myfastapiapp .
Spuštění Docker kontejneru
Spusťte svou aplikaci FastAPI:
docker run -d --name fastapi -p 80:80 myfastapiapp
Shrnutí
V tomto článku jsme podrobně vysvětlili, jak používat FastAPI k vytváření vysoce výkonných API služeb, od přípravy prostředí po vytvoření základního API, definování tras a datových modelů, až po přidání ověřování a nasazení. FastAPI nabízí mnoho silných funkcí, které usnadňují a zefektivňují vytváření moderních API. Můžete dále prozkoumat více funkcí a vlastností prostřednictvím oficiální dokumentace. Doufáme, že vám tento článek pomůže rychleji se seznámit s FastAPI a efektivně zvýšit vaši produktivitu při vývoji projektů!





