Si të ndërtoni një shërbim API me performancë të lartë duke përdorur FastAPI
Si të ndërtoni një shërbim API me performancë të lartë duke përdorur FastAPI
FastAPI është një kornizë moderne, e shpejtë (efikase) për web, e dizajnuar posaçërisht për ndërtimin e API-ve. Ajo është e bazuar në sugjerimet e tipave të Python dhe mbështet programimin asinkron, duke lejuar zhvilluesit të ndërtojnë shërbime API me performancë të lartë, me disponueshmëri të lartë dhe vonesa të ulëta. Ky artikull do t'ju tregojë në detaje se si të përdorni FastAPI për të ndërtuar shërbime API me performancë të lartë, duke e ndarë procesin në hapa, për t'ju ndihmuar të realizoni të gjithë procesin nga ndërtimi i mjedisit deri te shpërndarja.
Hapi i parë: Përgatitja e mjedisit
Duhet të siguroheni që në mjedisin tuaj të zhvillimit të jetë instaluar Python 3.6+. Nëse nuk e keni instaluar ende, mund të vizitoni Faqen zyrtare të Python për ta shkarkuar dhe instaluar.
Instaloni FastAPI dhe Uvicorn
FastAPI vetë nuk ofron shërbim, ka nevojë për një server ASGI për ta mbajtur. Këtu ne përdorim Uvicorn, një server ASGI me performancë të lartë. Mund të përdorni komandën e mëposhtme për të instaluar FastAPI dhe Uvicorn:
pip install fastapi uvicorn
Hapi i dytë: Ndërtoni API-në bazë
Le të krijojmë një aplikacion të thjeshtë FastAPI.
Krijoni skedarin e aplikacionit
Në direktorinë e projektit tuaj, krijoni një skedar Python, si p.sh. main.py, dhe pastaj shkruani kodin e mëposhtëm:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
Në kodin e mësipërm, ne së pari importojmë FastAPI dhe krijojmë një instancë app. Pastaj, ne përcaktojmë një rrugë GET, e cila kthen një përgjigje të thjeshtë JSON kur aksesohet rruga kryesore /.
Nisi serverin
Për të nisur serverin tuaj FastAPI, përdorni komandën e mëposhtme:
uvicorn main:app --reload
main: i referohet emrit të skedarit, pa prapashtesën .py.app: i referohet instancës FastAPI.--reload: në modin e zhvillimit, serveri do të riniset automatikisht kur të bëhen ndryshime në skedarë.
Hapi i tretë: Përcaktoni rrugët dhe modelet e të dhënave
Për të ndërtuar API të ndërlikuara, ju nevojitet të përdorni Pydantic për të përcaktuar modelet e të dhënave.
Krijoni modelin e të dhënave
Shtoni përmbajtjen e mëposhtme në main.py:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_available: bool = True
Ky kod përdor Pydantic për të krijuar një model të dhënash Item, i cili përmban tre atribute: emrin e produktit, çmimin dhe nëse është i disponueshëm.
Shtoni një rrugë të re
Më pas, ne mund të përcaktojmë një rrugë të re POST për të pranuar të dhëna të tipit Item:
@app.post("/items/")
async def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
Në këtë rrugë, FastAPI do të verifikojë automatikisht të dhënat e pranuara dhe do t'i mapojë ato në modelin Item.
Hapi i katërt: Gjenerimi automatik i dokumentacionit
Një nga avantazhet më të mëdha të FastAPI është se ajo mund të gjenerojë automatikisht dokumentacionin e API-ve. Ju mund ta shihni atë duke vizituar adresat e mëposhtme:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
Në këto dokumente të gjeneruara, ju mund të testoni API-në në mënyrë interaktive, duke parë format e kërkesave dhe përgjigjeve për çdo rrugë.
Hapi i pestë: Shtoni autentifikimin
Në aplikacionet reale, autentifikimi është një hap i rëndësishëm. Le të shtojmë një autentifikim të thjeshtë të bazuar në role.
Shtoni varësitë e sigurisë
Përdorni metodën Depends të FastAPI dhe OAuth2PasswordBearer për të realizuar autentifikimin:
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="Kredencialet e autentifikimit janë të pavlefshme")
return user
Mbrojtja e rrugëve
Më pas, mund të shtoni autentifikimin në rrugët që duhen mbrojtur:
@app.get("/users/me")
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
Hapi i gjashtë: Shpërndarja e aplikacionit FastAPI
Kur të keni përfunduar zhvillimin, mund të dëshironi ta shpërndani aplikacionin në një server në cloud. Mund të zgjidhni të përdorni Docker për shpërndarje.
Krijoni Dockerfile
Në direktorinë e projektit, krijoni një skedar të quajtur Dockerfile dhe shkruani përmbajtjen e mëposhtme:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
COPY ./app /app
Ndërtoni imazhin Docker
Në terminalin tuaj, përdorni komandën e mëposhtme për të ndërtuar imazhin Docker:
docker build -t myfastapiapp .
Ekzekutoni kontejnerin Docker
Ekzekutoni aplikacionin tuaj FastAPI:
docker run -d --name fastapi -p 80:80 myfastapiapp
Përmbledhje
Në këtë artikull, ne shpjeguam në detaje se si të përdorni FastAPI për të ndërtuar shërbime API me performancë të lartë, nga përgatitja e mjedisit deri te krijimi i API-së bazë, përcaktimi i rrugëve dhe modeleve të të dhënave, si dhe shtimi i autentifikimit dhe shpërndarja. FastAPI ofron shumë funksionalitete të fuqishme, duke e bërë ndërtimin e API-ve moderne të thjeshtë dhe efikas, dhe ju mund të eksploroni më shumë funksione dhe karakteristika përmes dokumentacionit zyrtar. Shpresojmë që ky artikull t'ju ndihmojë të filloni më shpejt me FastAPI dhe të rrisni efikasitetin e zhvillimit të projekteve tuaja!





