Errores y códigos de estado en Python
HTTPException es cómo un handler se niega, con el código de estado que tú eliges.
from fastapi import FastAPI, HTTPException
from fastapi.responses import JSONResponse
from fastapi.testclient import TestClient
app = FastAPI()
TOURS = {"basics": 60}
class TourFaltante(Exception):
def __init__(self, slug):
self.slug = slug
@app.exception_handler(TourFaltante)
def manejar_faltante(request, exc):
return JSONResponse(status_code=404, content={"error": exc.slug})
@app.get("/tours/{slug}")
def tour(slug: str):
if slug == "gone":
raise HTTPException(status_code=410, detail="ese tour se retiró")
if slug not in TOURS:
raise TourFaltante(slug)
return {"slug": slug, "steps": TOURS[slug]}
cliente = TestClient(app)
print(cliente.get("/tours/basics").json())
print(cliente.get("/tours/gone").status_code, cliente.get("/tours/gone").json())
print(cliente.get("/tours/nope").status_code, cliente.get("/tours/nope").json())
Cómo funciona
- Lánzala; no devuelvas un dict de error con un 200.
detailes lo que el cliente ve en el cuerpo.- Un manejador de excepciones mapea tus propios errores a respuestas.
Palabras clave y builtins usados aquí
classdefifprintraisereturnselfstr
El intento, en números
- Líneas
- 31
- Caracteres a escribir
- 842
- Tokens
- 222
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 121 segundos.
Paso 4 de 4 en Rutas de FastAPI; paso 9 de 19 en Servicios web y acceso a datos.