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. Temelji se na Python tipovima i podržava asinkrono 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 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 da preuzmete i instalirate.
Instalacija FastAPI i Uvicorn
FastAPI sam po sebi ne pruža uslugu, potreban je ASGI server za njegovo pokretanje. Ovdje koristimo Uvicorn, visokoperformantni ASGI server. Možete koristiti sljedeću komandu za instalaciju FastAPI i Uvicorn:
pip install fastapi uvicorn
Drugi korak: Izgradnja osnovnog API-ja
Hajde da kreiramo jednostavnu FastAPI aplikaciju.
Kreiranje aplikacijske datoteke
U vašem projektnom direktoriju, kreirajte Python datoteku, na primjer `main.py`, a zatim u njoj napišite sljedeć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 korijenskom putu `/`.
Pokretanje servera
Pokrenite vaš FastAPI server koristeći sljedeću komandu:
uvicorn main:app --reload
main: odnosi se na naziv datoteke, bez .py ekstenzije.app: odnosi se na FastAPI instancu.--reload: u razvoju, automatski restartuje server kada se datoteke promijene.
Treći korak: Definisanje ruta i modela podataka
Da biste izgradili složene API-je, trebate koristiti Pydantic za definisanje modela podataka.
Kreiranje 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 kreiranje modela podataka Item, koji sadrži tri atributa: naziv proizvoda, cijenu i dostupnost.
Dodavanje nove rute
Sljedeće, 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 sljedeć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 zahtjeva i odgovora za svaku rutu.
Peti korak: Dodavanje autentifikacije
U stvarnim aplikacijama, autentifikacija je važan korak. Hajde da dodamo jednostavnu autentifikaciju zasnovanu na rolama.
Dodavanje sigurnosnih zavisnosti
Koristite FastAPI-ev 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="Invalid authentication credentials")
return user
Zaštita ruta
Zatim, 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 razvoj, možda ćete htjeti implementirati aplikaciju na cloud server. Možete odabrati korištenje Dockera za implementaciju.
Kreiranje Dockerfile-a
U projektnom direktoriju kreirajte 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 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 nudi 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!





