Kako koristiti FastAPI za izgradnju visokoperformantnih API usluga
Kako koristiti FastAPI za izgradnju visokoperformantnih API usluga
FastAPI je moderni, brzi (efikasni) web okvir, posebno dizajniran za izgradnju API-ja. Osnovan je na Python tipovima i podržava asinhrono programiranje, omogućavajući programerima da izgrade visokoperformantne, visoko dostupne API usluge sa niskim kašnjenjem. Ovaj članak će vam detaljno objasniti kako koristiti FastAPI za izgradnju visokoperformantnih API usluga, a mi ćemo to raditi korak po korak, pomažući vam da ostvarite ceo proces od postavljanja okruženja do implementacije.
Prvi korak: Priprema okruženja
Morate se uveriti da je Python 3.6+ instaliran u vašem razvojnog okruženju. Ako još nije instaliran, možete posetiti Python zvaničnu stranicu da preuzmete i instalirate.
Instalacija FastAPI i Uvicorn
FastAPI sam po sebi ne pruža uslugu, potreban je ASGI server da ga podrži. Ovde koristimo Uvicorn, visokoperformantni ASGI server. Možete koristiti sledeću komandu za instalaciju FastAPI i Uvicorn:
pip install fastapi uvicorn
Drugi korak: Izgradnja osnovnog API-ja
Hajde da kreiramo jednostavnu FastAPI aplikaciju.
Kreiranje aplikacione datoteke
U vašem projektnom direktorijumu, kreirajte Python datoteku, na primer main.py, a zatim u njoj napišite sledeći kod:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
U gornjem kodu, prvo uvozimo FastAPI i kreiramo instancu app. Zatim definišemo GET rutu koja vraća jednostavan JSON odgovor kada se pristupi korenskom putu /.
Pokretanje servera
Pokrenite vaš FastAPI server koristeći sledeću komandu:
uvicorn main:app --reload
main: odnosi se na ime datoteke, bez .py ekstenzije.app: odnosi se na FastAPI instancu.--reload: u razvoju, automatski restartuje server kada se datoteke promene.
Treći korak: Definisanje ruta i modela podataka
Da biste izgradili složene API-je, potrebno je koristiti Pydantic za definisanje modela podataka.
Kreiranje modela podataka
U main.py dodajte sledeći sadržaj:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_available: bool = True
Ovaj kod koristi Pydantic za kreiranje modela podataka Item, koji sadrži tri atributa: naziv proizvoda, cenu i dostupnost.
Dodavanje novih ruta
Zatim možemo definisati 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 validirati primljene podatke i mapirati ih na Item model.
Četvrti korak: Automatsko generisanje dokumentacije
Jedna od najvećih prednosti FastAPI-a je mogućnost automatskog generisanja API dokumentacije. Možete pristupiti sledećim adresama da biste ih pregledali:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
U ovim generisanim dokumentima možete interaktivno testirati API, pregledati format zahteva i odgovora za svaku rutu.
Peti korak: Dodavanje autentifikacije
U stvarnim aplikacijama, autentifikacija je važan deo. Hajde da dodamo jednostavnu autentifikaciju zasnovanu na rolama.
Dodavanje sigurnosnih zavisnosti
Koristite FastAPI Depends metodu 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="Invalid authentication credentials")
return user
Zaštita ruta
Zatim možete dodati autentifikaciju na rute koje treba 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 razvoj, možda ćete želeti da implementirate aplikaciju na cloud server. Možete izabrati korišćenje Dockera za implementaciju.
Kreiranje Dockerfile-a
U projektnom direktorijumu kreirajte datoteku pod imenom Dockerfile i unesite sledeći sadržaj:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
COPY ./app /app
Izgradnja Docker slike
U vašem terminalu, koristite sledeću komandu za izgradnju Docker slike:
docker build -t myfastapiapp .
Pokretanje Docker kontejnera
Pokrenite vašu FastAPI aplikaciju:
docker run -d --name fastapi -p 80:80 myfastapiapp
Zaključak
U ovom članku, detaljno smo objasnili kako koristiti FastAPI za izgradnju visokoperformantnih API usluga, od pripreme okruženja do kreiranja osnovnog API-ja, definisanja ruta i modela podataka, pa sve do dodavanja autentifikacije i implementacije. FastAPI pruža mnoge moćne funkcije, čineći izgradnju modernih API-ja jednostavnom i efikasnom, a možete dalje istraživati više funkcija i karakteristika kroz zvaničnu dokumentaciju. Nadamo se da će vam ovaj članak pomoći da brže savladate FastAPI i efikasno poboljšate vašu produktivnost u razvoju projekata!





