Com utilitzar FastAPI per construir serveis API d'alta rendiment
Com utilitzar FastAPI per construir serveis API d'alta rendiment
FastAPI és un marc web modern i ràpid (eficient), dissenyat específicament per a la construcció d'API. Està basat en les indicacions de tipus de Python i suporta la programació asíncrona, permetent als desenvolupadors construir serveis API d'alta rendiment, alta disponibilitat i baixa latència. Aquest article us explicarà detalladament com utilitzar FastAPI per construir serveis API d'alta rendiment, i ho farem pas a pas per ajudar-vos a aconseguir tot el procés, des de la preparació de l'entorn fins al desplegament.
Pas 1: Preparació de l'entorn
Heu d'assegurar-vos que teniu instal·lat Python 3.6 o superior al vostre entorn de desenvolupament. Si no l'heu instal·lat, podeu visitar la pàgina oficial de Python per descarregar i instal·lar.
Instal·lar FastAPI i Uvicorn
FastAPI per si mateix no proporciona servei, necessita un servidor ASGI per allotjar-se. Aquí utilitzarem Uvicorn, un servidor ASGI d'alta rendiment. Podeu instal·lar FastAPI i Uvicorn amb la següent comanda:
pip install fastapi uvicorn
Pas 2: Construir l'API bàsica
Anem a crear una aplicació FastAPI senzilla.
Crear el fitxer d'aplicació
Al vostre directori de projecte, creeu un fitxer Python, com ara main.py, i escriviu el següent codi:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
En el codi anterior, primer importem FastAPI i creem una instància app. A continuació, definim una ruta GET que retorna una resposta JSON senzilla quan s'accedeix a la ruta arrel /.
Iniciar el servidor
Inicieu el vostre servidor FastAPI amb la següent comanda:
uvicorn main:app --reload
main: es refereix al nom del fitxer, sense l'extensió .py.app: es refereix a la instància de FastAPI.--reload: en mode de desenvolupament, reinicia automàticament el servidor quan es fan canvis al fitxer.
Pas 3: Definir rutes i models de dades
Per establir API complexes, necessitareu utilitzar Pydantic per definir models de dades.
Crear models de dades
Afegeix el següent contingut a main.py:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_available: bool = True
Aquest codi utilitza Pydantic per crear un model de dades Item, que conté tres atributs: nom del producte, preu i disponibilitat.
Afegeix noves rutes
A continuació, podem definir una nova ruta POST per rebre dades del tipus Item:
@app.post("/items/")
async def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
En aquesta ruta, FastAPI validarà automàticament les dades entrants i les maparà al model Item.
Pas 4: Generació automàtica de documentació
Un dels grans avantatges de FastAPI és que pot generar automàticament documentació API. Podeu veure-la accedint a les següents adreces:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
En aquesta documentació generada, podeu provar l'API de manera interactiva i veure el format de les sol·licituds i respostes de cada ruta.
Pas 5: Afegir autenticació
En aplicacions reals, l'autenticació és un pas important. Afegim una autenticació senzilla basada en rols.
Afegeix dependències de seguretat
Utilitzant el mètode Depends de FastAPI i OAuth2PasswordBearer per implementar l'autenticació:
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
Protegir rutes
A continuació, podeu afegir l'autenticació a les rutes que necessiten protecció:
@app.get("/users/me")
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
Pas 6: Desplegar l'aplicació FastAPI
Quan acabeu el desenvolupament, és possible que necessiteu desplegar l'aplicació en un servidor al núvol. Podeu optar per desplegar amb Docker.
Crear Dockerfile
Creeu un fitxer anomenat Dockerfile al directori del projecte i escriviu el següent contingut:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
COPY ./app /app
Construir la imatge Docker
Al vostre terminal, utilitzeu la següent comanda per construir la imatge Docker:
docker build -t myfastapiapp .
Executar el contenidor Docker
Executeu la vostra aplicació FastAPI:
docker run -d --name fastapi -p 80:80 myfastapiapp
Resum
En aquest article, hem explicat detalladament com utilitzar FastAPI per construir serveis API d'alta rendiment, des de la preparació de l'entorn fins a la creació de l'API bàsica, la definició de rutes i models de dades, així com l'afegiment d'autenticació i el desplegament. FastAPI ofereix moltes funcions potents que fan que la construcció d'API modernes sigui senzilla i eficient. Podeu explorar més funcions i característiques a través de la documentació oficial. Esperem que aquest article us ajudi a començar més ràpidament amb FastAPI i a millorar l'eficiència del vostre desenvolupament de projectes!





