typestar

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

  1. El modelo se vuelve el esquema de la petición.
  2. response_model filtra y documenta lo que regresa.
  3. Una falla de validación es un 422 con la ruta del campo.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 4 en Rutas de FastAPI; paso 8 de 19 en Servicios web y acceso a datos.

← Anterior Siguiente →