DocsControladores y errores

Validación y errores

Cómo un controlador de API informa una solicitud incorrecta.

Validación

Los parámetros del controlador son validados por FastAPI contra sus anotaciones.

src/rutas/api/search.py
from nexy.http import Header  async def GET(q: str, limit: int = 10, x_token: str = Header(...)):    return {"q": q, "limit": limit}
Problema Estado Cuerpo
Consulta, encabezado, cookie o campo de cuerpo faltantes o no válidos 422 {"detail": [{"loc": [...], "msg": "...", "type": "..."}]}
segmento ruta no válido (/api/users/abc para id: int) 404 la página no encontrada, o JSON para Accept: application/json

Un segmento de ruta que no se puede convertir es un 404 en lugar de un 422: una ruta dinámica captura cualquier URL y una URL que no se puede convertir no existe.

El cuerpo de 422 tiene la forma estándar de FastAPI, por lo que los clientes existentes y los SDK generados siguen funcionando.

Generando errores

src/rutas/api/items/[id].py
from nexy.http import HTTPException  async def GET(id: int):    item = find(id)    if item is None:        raise HTTPException(status_code=404, detail="No such item")    return item
El cliente envía Respuesta
Accept: application/json {"detail": "No such item"} con estado 404
Accept: text/html la página de error
Accept: */* la página de error

Establezca Accept: application/json en clientes API. Los navegadores siguen recibiendo páginas.

Excepciones no controladas

Una excepción es que su controlador no detecta las respuestas 500, con la misma opción HTML o JSON.

Respuestas personalizadas

Devuelve un objeto de respuesta cuando controlas el cuerpo:

from nexy.http import JSONResponse  async def POST():    return JSONResponse({"error": "conflict"}, status_code=409)

Próximos pasos

Editar en GitHub

Enter abre el resultado, Esc lo cierra.