OpenAPI Validator /users endpoints
Clase 6 de 19 • Curso de API First
Resumen
La construcción de APIs está evolucionando constantemente, y con herramientas como OpenAPI podemos simplificar significativamente el proceso de validación y documentación. Al definir contratos claros para nuestros endpoints, no solo facilitamos el desarrollo sino que también mejoramos la experiencia para quienes consumen nuestras APIs.
¿Cómo implementar validaciones en una API usando OpenAPI?
Cuando desarrollamos APIs, es común encontrarnos con la necesidad de validar la información que recibimos de los usuarios. Tradicionalmente, esta validación se realiza directamente en el código de nuestro servidor, lo que puede resultar en código repetitivo y difícil de mantener. Sin embargo, con OpenAPI podemos definir estas validaciones en un archivo de especificación y luego utilizarlas automáticamente en nuestra implementación.
Para entender este proceso, vamos a construir un endpoint para crear usuarios que valide la información automáticamente:
- Primero debemos definir la estructura en nuestro archivo OpenAPI
- Luego implementaremos la lógica en Express
- Finalmente, probaremos que las validaciones funcionen correctamente
¿Cómo definir la estructura del endpoint en OpenAPI?
Para nuestro endpoint de usuarios, necesitamos especificar:
- Un método POST en la ruta "/users"
- Un cuerpo de petición obligatorio con campos validados
- Una respuesta estructurada para cuando la operación es exitosa
Aquí está la implementación en el archivo OpenAPI:
users:
post:
summary: Crear un nuevo usuario
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- name
- age
- email
properties:
name:
type: string
minLength: 2
age:
type: integer
minimum: 18
email:
type: string
format: email
responses:
201:
description: Usuario creado correctamente
content:
application/json:
schema:
type: object
properties:
id:
type: string
name:
type: string
age:
type: integer
email:
type: string
Esta definición especifica que:
- El nombre debe tener al menos 2 caracteres
- La edad mínima es 18 años
- El email debe tener un formato válido
- Todos estos campos son obligatorios
Lo más valioso de definir estas reglas en OpenAPI es que serán validadas automáticamente por el middleware que hemos integrado, sin necesidad de escribir código adicional de validación en nuestra aplicación.
¿Cómo implementar el endpoint en Express?
Una vez definida la estructura en OpenAPI, implementar el endpoint en Express se vuelve mucho más sencillo:
// Middleware para procesar JSON
app.use(express.json());
// Endpoint para crear usuarios
app.post('/users', (req, res) => {
// Desestructuramos los datos del cuerpo de la petición
const { name, age, email } = req.body;
// No necesitamos validar los datos, OpenAPI ya lo hizo por nosotros
// Creamos el nuevo usuario
const newUser = {
id: Date.now().toString(),
name,
age,
email
};
// Enviamos la respuesta
res.status(201).json(newUser);
});
Observemos que no estamos escribiendo validaciones en nuestro código de Express. Esto es posible porque el middleware de validación de OpenAPI intercepta la petición y verifica que cumpla con las reglas antes de llegar a nuestro controlador.
¿Qué ventajas ofrece la validación automática con OpenAPI?
Esta aproximación ofrece numerosas ventajas:
- Separación de responsabilidades: Las reglas de validación están en la especificación, no en el código.
- Documentación automática: La especificación sirve como documentación interactiva para los consumidores de la API.
- Validación estandarizada: Se aplican estándares consistentes para validar datos en toda la API.
- Menor probabilidad de errores: Se reduce el código de validación manual, disminuyendo las posibilidades de introducir errores.
Al probar el endpoint, si enviamos datos que no cumplen las reglas (como un nombre muy corto, una edad menor de 18 o un email mal formateado), obtendremos automáticamente un error 400 con un mensaje descriptivo que indica exactamente qué validación falló.
¿Cómo probar y verificar el funcionamiento de la API?
Para asegurar el correcto funcionamiento de nuestra API, es fundamental probarla exhaustivamente:
- Ejecutar el servidor: Asegúrate de que tu servidor esté corriendo con
npm run dev
. - Verificar la documentación: Accede a la documentación interactiva generada por OpenAPI.
- Probar casos válidos: Envía peticiones que cumplan todas las reglas de validación.
- Probar casos inválidos: Verifica que se rechacen correctamente las peticiones que no cumplen las reglas.
Por ejemplo, si intentamos crear un usuario con un nombre de un solo carácter:
{
"name": "A",
"age": 25,
"email": "usuario@ejemplo
La API responderá con un error 400 indicando que el nombre debe tener al menos 2 caracteres.
El validator integrado con OpenAPI no solo valida la estructura del código, sino también las peticiones en tiempo de ejecución, proporcionando mensajes de error descriptivos que facilitan la depuración tanto para desarrolladores como para consumidores de la API.
La integración de OpenAPI con el proceso de validación nos permite construir APIs más robustas, mejor documentadas y más fáciles de mantener, todo mientras reducimos la cantidad de código que necesitamos escribir.
¿Estás implementando validaciones en tus APIs? ¿Has considerado utilizar OpenAPI para simplificar este proceso? Comparte tu experiencia en los comentarios y explora cómo esta aproximación puede mejorar tus desarrollos.