DocsManipuladores e erros
Validação e erros
Como um manipulador de API relata uma solicitação incorreta.
Validação
Os parâmetros do manipulador são validados por FastAPI em relação às suas anotações.
from nexy.http import Header async def GET(q: str, limit: int = 10, x_token: str = Header(...)): return {"q": q, "limit": limit}| Problema | Status | Corpo |
|---|---|---|
| consulta, cabeçalho, cookie ou campo de corpo ausentes ou inválidos | 422 |
{"detail": [{"loc": [...], "msg": "...", "type": "..."}]} |
segmento caminho inválido (/api/users/abc para id: int) |
404 |
a página não encontrada ou JSON para Accept: application/json |
Um segmento de caminho que não pode ser convertido é um 404 em vez de um 422: uma rota dinâmica captura qualquer URL e uma URL que não pode ser convertida não existe.
O corpo do 422 é o formato padrão do FastAPI, portanto, os clientes existentes e os SDKs gerados continuam funcionando.
Levantando erros
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| Cliente envia | Resposta |
|---|---|
Accept: application/json |
{"detail": "No such item"} com status 404 |
Accept: text/html |
a página de erro |
Accept: */* |
a página de erro |
Defina Accept: application/json em clientes API. Os navegadores continuam recebendo páginas.
Exceções não tratadas
Uma exceção é que seu manipulador não captura respostas 500, com a mesma escolha de HTML ou JSON.
Respostas personalizadas
Retorne um objeto de resposta quando você controla o corpo:
from nexy.http import JSONResponse async def POST(): return JSONResponse({"error": "conflict"}, status_code=409)