Ako používať FastAPI na vytvorenie vysoko výkonných API služieb
Ako používať FastAPI na vytvorenie vysoko výkonných API služieb
FastAPI je moderný, rýchly (efektívny) webový rámec, navrhnutý na vytváranie API. Je založený na typových náznakoch Pythonu a podporuje asynchrónne programovanie, čo umožňuje vývojárom vytvárať vysoko výkonné, vysoko dostupné API služby s nízkou latenciou. Tento článok vám podrobne predstaví, ako používať FastAPI na vytvorenie vysoko výkonných API služieb, pričom budeme postupovať krok za krokom, aby sme vám pomohli realizovať celý proces od nastavenia prostredia po nasadenie.
Prvý krok: Príprava prostredia
Musíte sa uistiť, že vo vašom vývojovom prostredí je nainštalovaný Python 3.6+. Ak ešte nie je nainštalovaný, môžete navštíviť oficiálnu stránku Pythonu a stiahnuť a nainštalovať ho.
Inštalácia FastAPI a Uvicorn
FastAPI samo o sebe neposkytuje službu, potrebuje ASGI server na hostenie. Tu používame Uvicorn, vysoko výkonný ASGI server. Môžete použiť nasledujúci príkaz na inštaláciu FastAPI a Uvicorn:
pip install fastapi uvicorn
Druhý krok: Vytvorenie základného API
Vytvorme jednoduchú aplikáciu FastAPI.
Vytvorenie súboru aplikácie
Vo vašom projektovom adresári vytvorte Python súbor, napríklad main.py, a do neho napíšte nasledujúci kód:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Ahoj, svet!"}
V uvedenom kóde najprv importujeme FastAPI a vytvoríme inštanciu app. Potom definujeme GET trasu, ktorá pri prístupe na koreňovú cestu / vráti jednoduchú JSON odpoveď.
Spustenie servera
Spustite svoj FastAPI server pomocou nasledujúceho príkazu:
uvicorn main:app --reload
main: označuje názov súboru bez prípony .py.app: označuje inštanciu FastAPI.--reload: v režime vývoja sa server automaticky reštartuje pri zmene súboru.
Tretí krok: Definovanie trás a dátových modelov
Na vytvorenie zložitých API potrebujete použiť Pydantic na definovanie dátových modelov.
Vytvorenie dátového modelu
Do main.py pridajte nasledujúci obsah:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_available: bool = True
Tento kód používa Pydantic na vytvorenie dátového modelu Item, ktorý obsahuje tri atribúty: názov produktu, cenu a dostupnosť.
Pridanie novej trasy
Potom môžeme definovať novú POST trasu na prijímanie dát typu Item:
@app.post("/items/")
async def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
V tejto trase FastAPI automaticky overí prijaté dáta a mapuje ich na model Item.
Štvrtý krok: Automatická generácia dokumentácie
Jednou z najväčších výhod FastAPI je, že môže automaticky generovať dokumentáciu API. Môžete si ju pozrieť na nasledujúcich adresách:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
V týchto generovaných dokumentoch môžete interaktívne testovať API a pozerať sa na formát požiadaviek a odpovedí pre každú trasu.
Piaty krok: Pridanie autentifikácie
V reálnych aplikáciách je autentifikácia dôležitým aspektom. Pridajme jednoduchú autentifikáciu založenú na rolách.
Pridanie bezpečnostných závislostí
Použite metódu Depends FastAPI a OAuth2PasswordBearer na implementáciu autentifikácie:
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é autentifikačné údaje")
return user
Ochrana trás
Potom môžete pridať autentifikáciu do trás, ktoré potrebujete chrániť:
@app.get("/users/me")
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
Šiesty krok: Nasadenie aplikácie FastAPI
Keď dokončíte vývoj, možno budete chcieť nasadiť aplikáciu na cloudový server. Môžete sa rozhodnúť pre nasadenie pomocou Dockeru.
Vytvorenie Dockerfile
V projektovom adresári vytvorte súbor s názvom Dockerfile a zadajte nasledujúci obsah:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
COPY ./app /app
Vytvorenie Docker obrazu
Vo vašom termináli použite nasledujúci príkaz na vytvorenie Docker obrazu:
docker build -t myfastapiapp .
Spustenie Docker kontajnera
Spustite svoju aplikáciu FastAPI:
docker run -d --name fastapi -p 80:80 myfastapiapp
Zhrnutie
V tomto článku sme podrobne vysvetlili, ako používať FastAPI na vytvorenie vysoko výkonných API služieb, od prípravy prostredia po vytvorenie základného API, definovanie trás a dátových modelov, až po pridanie autentifikácie a nasadenie. FastAPI ponúka množstvo silných funkcií, ktoré uľahčujú a zefektívňujú vytváranie moderných API, môžete sa prostredníctvom oficiálnej dokumentácie ďalej preskúmať ďalšie funkcie a vlastnosti. Dúfame, že vám tento článok pomôže rýchlejšie sa zorientovať vo FastAPI a efektívne zvýšiť vašu produktivitu pri vývoji projektov!





