Cuerpos de petición en Python
Un modelo de pydantic como parámetro significa que el cuerpo se valida por ti.
from fastapi import FastAPI
from fastapi.testclient import TestClient
from pydantic import BaseModel, Field
class IntentoIn(BaseModel):
lang: str
tpm: float = Field(gt=0)
class IntentoOut(BaseModel):
lang: str
stars: int
app = FastAPI()
@app.post("/results", response_model=IntentoOut, status_code=201)
def guardar(intento: IntentoIn):
return {"lang": intento.lang, "stars": 3 if intento.tpm >= 100 else 1,
"secret": "esto se filtra"}
cliente = TestClient(app)
enviado = cliente.post("/results", json={"lang": "python", "tpm": 104})
print(enviado.status_code, enviado.json())
print(cliente.post("/results", json={"lang": "x", "tpm": -1}).status_code)
Cómo funciona
- El modelo se vuelve el esquema de la petición.
response_modelfiltra y documenta lo que regresa.- Una falla de validación es un 422 con la ruta del campo.
Palabras clave y builtins usados aquí
classdefelsefloatifintprintreturnstr
El intento, en números
- Líneas
- 28
- Caracteres a escribir
- 660
- Tokens
- 187
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 102 segundos.
Paso 3 de 4 en Rutas de FastAPI; paso 8 de 19 en Servicios web y acceso a datos.