Manejo de errores
Hay muchas situaciones en las que necesitas notificar un error al cliente que está utilizando tu API. Podrías necesitar decirle al cliente que:
- El cliente no tiene suficientes privilegios para esa operación.
- El cliente no tiene acceso a ese recurso.
- El recurso al que el cliente estaba intentando acceder, no existe.
etc..., En estos casos, normalmente devolverías un código de estado HTTP en el rango de 400 (de 400 a 499).
Callisto proporciona algunas funciones para manejar estas excepciones.
Importante
Se recomienda cargar(registrar) estos manejadores de error, utilizando exception_handler
de FastApi.
Defina estas funciones después de la instancia principal del BackEnd y de los middlewares.
El uso de estas funciones se encuentra en el archivo app/server.py.
veamos un ejemplo:
Nota
Para más información consulta el módulo error_handlers.
not_found
Se encarga de devolver una respuesta JSON por defecto, cuando no se encuentra el recurso solicitado.
not_allowed
Se encarga de devolver una respuesta JSON por defecto, cuando el recurso solicitado no está permitido, normalmente generado por APIRouter.
request_entity_too_large
Para GAE/Google Cloud Run, cuando la solicitud es más grande de lo que el servidor quiere o puede servir.
infernal_server_error
Se encarga de devolver las respuestas en JSON por defecto, cuando se lanza una HTTPException, para prevenir que el BackEnd genere un error 500x.
validation_exception_handler
Sobreescribe algunos errores de FastApi (Ej. 422) por mensajes acordes a la estructura de respuestas del BackEnd.
custom_http_exceptions
Sobreescribe algunos errores de FastApi generados por excepciones personalizadas y por HTTPException
, con mensajes acordes a la estructura de respuestas del BackEnd.