Kako z uporabo FastAPI zgraditi visokozmogljivo API storitev
Kako z uporabo FastAPI zgraditi visokozmogljivo API storitev
FastAPI je sodoben, hiter (učinkovit) spletni okvir, zasnovan za gradnjo API-jev. Temelji na Pythonovih tipnih namigih in podpira asinhrono programiranje, kar razvijalcem omogoča gradnjo visokozmogljivih, visoko razpoložljivih API storitev z nizko zakasnitvijo. V tem članku vam bomo podrobno predstavili, kako z uporabo FastAPI zgraditi visokozmogljivo API storitev, razdelili bomo postopek na korake, da vam bomo pomagali pri celotnem procesu od priprave okolja do namestitve.
Prvi korak: Priprava okolja
Prepričati se morate, da imate v svojem razvojnem okolju nameščen Python 3.6 ali novejši. Če še niste namestili, lahko obiščete Python uradno stran in ga prenesete ter namestite.
Namestitev FastAPI in Uvicorn
FastAPI sam po sebi ne nudi storitve, potrebuje ASGI strežnik za gostovanje. Tukaj uporabljamo Uvicorn, visokozmogljiv ASGI strežnik. FastAPI in Uvicorn lahko namestite z naslednjim ukazom:
pip install fastapi uvicorn
Drugi korak: Gradnja osnovnega API
Ustvarimo preprosto FastAPI aplikacijo.
Ustvarite datoteko aplikacije
V svojem projektnem imeniku ustvarite Python datoteko, na primer main.py, in vanjo vpišite naslednjo kodo:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
V zgornji kodi najprej uvozimo FastAPI in ustvarimo instanco app. Nato definiramo GET pot, ki ob obisku korenske poti / vrne preprosto JSON odziv.
Zagon strežnika
Za zagon vašega FastAPI strežnika uporabite naslednji ukaz:
uvicorn main:app --reload
main: se nanaša na ime datoteke, brez končnice .py.app: se nanaša na instanco FastAPI.--reload: v načinu razvoja se strežnik samodejno znova zažene ob spremembi datoteke.
Tretji korak: Določitev poti in podatkovnih modelov
Za vzpostavitev zapletenih API-jev morate uporabiti Pydantic za določitev podatkovnih modelov.
Ustvarite podatkovni model
V main.py dodajte naslednjo vsebino:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_available: bool = True
Ta koda uporablja Pydantic za ustvarjanje podatkovnega modela Item, ki vsebuje tri lastnosti: ime izdelka, cena in razpoložljivost.
Dodajte nove poti
Nato lahko definiramo novo POST pot za sprejem podatkov tipa Item:
@app.post("/items/")
async def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
V tej poti FastAPI samodejno preveri prejet podatke in jih preslika v model Item.
Četrti korak: Samodejna generacija dokumentacije
Ena največjih prednosti FastAPI je, da lahko samodejno generira dokumentacijo API. Dokumentacijo si lahko ogledate na naslednjih naslovih:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
V tej generirani dokumentaciji lahko interaktivno preizkusite API in si ogledate format zahtevkov in odgovorov za vsako pot.
Peti korak: Dodajanje overjanja
V praktičnih aplikacijah je overjanje pomemben korak. Dodajmo preprosto overjanje na osnovi vlog.
Dodajte varnostne odvisnosti
Uporabite FastAPI metodo Depends in OAuth2PasswordBearer za izvedbo overjanja:
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="Invalid authentication credentials")
return user
Zaščitite poti
Nato lahko dodate overjanje na poti, ki jih želite zaščititi:
@app.get("/users/me")
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
Šesti korak: Namestitev FastAPI aplikacije
Ko končate z razvojem, boste morda želeli aplikacijo namestiti na oblačni strežnik. Lahko se odločite za uporabo Dockerja za namestitev.
Ustvarite Dockerfile
V projektnem imeniku ustvarite datoteko z imenom Dockerfile in vnesite naslednjo vsebino:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
COPY ./app /app
Zgradite Docker sliko
V svojem terminalu uporabite naslednji ukaz za gradnjo Docker slike:
docker build -t myfastapiapp .
Zaženi Docker kontejner
Zaženi svojo FastAPI aplikacijo:
docker run -d --name fastapi -p 80:80 myfastapiapp
Povzetek
V tem članku smo podrobno razložili, kako z uporabo FastAPI zgraditi visokozmogljivo API storitev, od priprave okolja do ustvarjanja osnovnega API, določanja poti in podatkovnih modelov, pa vse do dodajanja overjanja in namestitve. FastAPI ponuja številne močne funkcije, ki omogočajo enostavno in učinkovito gradnjo sodobnih API-jev, dodatne funkcionalnosti in lastnosti pa lahko raziskujete v uradni dokumentaciji. Upamo, da vam bo ta članek pomagal hitreje obvladati FastAPI in učinkovito povečati vašo produktivnost pri razvoju projektov!





