Kako koristiti FastAPI za izgradnju visokoučinkovitih API usluga
Kako koristiti FastAPI za izgradnju visokoučinkovitih API usluga
FastAPI je moderni, brzi (efikasni) web okvir, posebno dizajniran za izgradnju API-ja. Temelji se na Pythonovim tipovima i podržava asinkrono programiranje, omogućujući programerima izgradnju visokoučinkovitih, visoko dostupnih API usluga s niskom latencijom. Ovaj članak će vam detaljno objasniti kako koristiti FastAPI za izgradnju visokoučinkovitih API usluga, a mi ćemo to učiniti korak po korak, pomažući vam da ostvarite cijeli proces od postavljanja okruženja do implementacije.
Prvi korak: Priprema okruženja
Morate osigurati da je Python 3.6+ instaliran u vašem razvojnog okruženju. Ako još nije instaliran, možete posjetiti službenu stranicu Pythona za preuzimanje i instalaciju.
Instalacija FastAPI i Uvicorn
FastAPI sam po sebi ne pruža uslugu, potreban je ASGI poslužitelj za njegovo pokretanje. Ovdje koristimo Uvicorn, visokoučinkovit ASGI poslužitelj. Možete instalirati FastAPI i Uvicorn koristeći sljedeću naredbu:
pip install fastapi uvicorn
Drugi korak: Izgradnja osnovnog API-ja
Stvorimo jednostavnu FastAPI aplikaciju.
Stvaranje datoteke aplikacije
U vašem projektnom direktoriju, stvorite Python datoteku, na primjer, main.py, a zatim u nju upišite sljedeći kod:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
U gornjem kodu, prvo smo uvezli FastAPI i stvorili instancu app. Zatim smo definirali GET rutu koja vraća jednostavan JSON odgovor kada se pristupi korijenskom putu /.
Pokretanje poslužitelja
Pokrenite svoj FastAPI poslužitelj koristeći sljedeću naredbu:
uvicorn main:app --reload
main: odnosi se na naziv datoteke, bez .py ekstenzije.app: odnosi se na FastAPI instancu.--reload: u razvoju, automatski ponovno pokreće poslužitelj kada se datoteke promijene.
Treći korak: Definiranje ruta i modela podataka
Kako biste izgradili složene API-je, trebate koristiti Pydantic za definiranje modela podataka.
Stvaranje modela podataka
U main.py dodajte sljedeći sadržaj:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_available: bool = True
Ovaj kod koristi Pydantic za stvaranje modela podataka Item, koji sadrži tri atributa: naziv proizvoda, cijenu i dostupnost.
Dodavanje nove rute
Nakon toga, možemo definirati novu POST rutu za primanje podataka tipa Item:
@app.post("/items/")
async def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
U ovoj ruti, FastAPI će automatski provjeriti dolazne podatke i mapirati ih na model Item.
Četvrti korak: Automatsko generiranje dokumentacije
Jedna od najvećih prednosti FastAPI-ja je automatsko generiranje dokumentacije API-ja. Možete pregledati dokumentaciju na sljedećim adresama:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
U ovim generiranim dokumentima možete interaktivno testirati API i pregledati format zahtjeva i odgovora za svaku rutu.
Peti korak: Dodavanje autentifikacije
U stvarnim aplikacijama, autentifikacija je važan korak. Dodajmo jednostavnu autentifikaciju temeljen na ulozi.
Dodavanje sigurnosnih zavisnosti
Koristite FastAPI-jev Depends metod i OAuth2PasswordBearer za implementaciju autentifikacije:
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="Nevažeće autentifikacijske vjerodajnice")
return user
Zaštita ruta
Nakon toga, možete dodati autentifikaciju na rute koje trebate zaštititi:
@app.get("/users/me")
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
Šesti korak: Implementacija FastAPI aplikacije
Kada završite s razvojem, možda ćete htjeti implementirati aplikaciju na cloud poslužitelj. Možete odabrati korištenje Dockera za implementaciju.
Stvaranje Dockerfile-a
U projektnom direktoriju stvorite datoteku pod nazivom Dockerfile i unesite sljedeći sadržaj:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
COPY ./app /app
Izgradnja Docker slike
U vašem terminalu, koristite sljedeću naredbu za izgradnju Docker slike:
docker build -t myfastapiapp .
Pokretanje Docker kontejnera
Pokrenite svoju FastAPI aplikaciju:
docker run -d --name fastapi -p 80:80 myfastapiapp
Zaključak
U ovom članku detaljno smo objasnili kako koristiti FastAPI za izgradnju visokoučinkovitih API usluga, od pripreme okruženja do stvaranja osnovnog API-ja, definicije ruta i modela podataka, pa sve do dodavanja autentifikacije i implementacije. FastAPI nudi mnoge moćne funkcije koje olakšavaju i čine učinkovitim izgradnju modernih API-ja, a možete dodatno istražiti više funkcija i značajki putem službene dokumentacije. Nadamo se da će vam ovaj članak pomoći da brže savladate FastAPI i učinkovito poboljšate svoju produktivnost u razvoju projekata!





