JSON Schema
La clase ValidateSchema
de Callisto, ubicada en /app/common/middlewares/json_schema.py contiene una implementación del validadador de JSON Schema 2020-12 que permite validar el cuerpo de la petición (el request body
y usualmente en formato json).
consulta el middleware:
y el apartado de:
- JSON Schema en las funciones de utilidad.
La clase ValidateSchema
, es utilizada aquí como Inyección de Depedencias, para obtener el cuerpo de la peticion, validarlo con JSONSchema v. draft 2020-12
, y utilizarlo dentro de una vista (view).
veamos un ejemplo:
definimos un esquema para validar la entrada de datos:
Importante
Recuerda que el esquema debe estar bajo draft 2020-12.
importamos ValidateSchema
para utilizarlo en nuestro route:
utilizamos una dependencia(Depends) en nuestro route, para realizar la validación del cuerpo de la petición:
Nota
Si la validación es exitosa, se retorna un objeto JSON (cuerpo de la petición) y no un objeto de Pydantic.
utiliza el objeto JSON, dentro del route:
Ejemplo
A continuación el ejemplo completo:
Recuerda
ValidateSchema
solo está disponible para métodos POST
y PUT
.
cuando se valida el cuerpo de la petición:
- Si ocurre un error en la validación, se generará una excepción de tipo HTTPException para devolver respuestas HTTP con errores al cliente.
- Si la validación es exitosa, se retorna un objeto JSON (cuerpo de la petición) y no un objeto de Pydantic.
Lectura recomendada
- El apartado de JSON Schema en las funciones de utilidad.
- El middleware app.common.middlewares.json_schema
- El módulo app.utils.validate_schema
- FastAPI Dependencies
- FastAPI Handling Errors
- JSON Schema
- JSON Schema Especifications