typestar

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

  1. Lánzala; no devuelvas un dict de error con un 200.
  2. detail es lo que el cliente ve en el cuerpo.
  3. Un manejador de excepciones mapea tus propios errores a respuestas.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

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

← Anterior Siguiente →