Lección 5 de 12 · Lectura y práctica
Validacion con Zod y contratos de API
Respuesta rapida: Validar inputs es obligatorio en una API publica. Zod permite declarar esquemas para body, params y query antes de ejecutar reglas de negocio. Que vas a construir Validar inputs es obligatorio en una API.
Del concepto a la práctica
Taller de esta lección
Un contrato de API convierte entradas ambiguas en datos que el dominio puede procesar. La validación debe ejecutarse en el servidor y distinguir tipo, formato, límites y valores permitidos. Un error de validación no debe llegar como una excepción genérica.
Ejemplo resuelto
Para crear un curso, acepta title de 3 a 80 caracteres, level igual a basic o advanced y hours entero positivo. El body {title:"JS",level:"expert",hours:0} contiene tres problemas: título corto, nivel no permitido y duración inválida. La respuesta puede ser 400 con errores por campo, sin llamar al servicio.
Con Zod, expresa y usa el contrato, sin confiar en una conversión implícita:
import { z } from 'zod';
const CursoInput = z.object({
title: z.string().trim().min(3).max(80),
level: z.enum(['basic', 'advanced']),
hours: z.number().int().positive(),
});
const resultado = CursoInput.safeParse({ title: 'JavaScript', level: 'basic', hours: 6 });
if (!resultado.success) {
const errores = resultado.error.issues.map(i => ({ campo: i.path.join('.'), mensaje: i.message }));
console.log(errores);
} else {
console.log(resultado.data);
}El número 6 es válido; la cadena "6" no lo es con este esquema. No reutilices coerción indiscriminada para parámetros, valores vacíos o campos opcionales.
Pruébalo
Define campos obligatorios y límites.
Valida body, params y query por separado.
Devuelve una forma estable para los errores.
Ejecuta la regla de negocio solo tras validar.
Error frecuente: confiar en la validación del frontend. Corrígelo tratando todo request como no confiable, incluso si proviene de tu propia interfaz.
Comprueba tu resultado
Prueba cuatro cuerpos: uno válido, uno sin title, uno con level:"expert" y uno con hours:-2. Solo el primero debe llegar al servicio; los otros tres deben producir 400 y señalar el campo responsable.

Mapa de prácticaEl navegador envía una solicitud a la API. El servidor valida la operación y consulta los datos; después devuelve una respuesta que el navegador puede mostrar. La base de datos se comunica con el servidor y no directamente con el navegador.
Ver la infografía en tamaño completo ↗Fuentes para profundizar
Que vas a construir
Validar inputs es obligatorio en una API publica. Zod permite declarar esquemas para body, params y query antes de ejecutar reglas de negocio.
Paso 1: criterio de backend
Un contrato claro define que campos acepta una ruta, que formatos son validos y que errores recibe el cliente si algo esta mal. Esto mejora frontend, QA y soporte.
Paso 2: criterio de backend
Evita validar solo en el cliente. El backend debe tratar cada request como no confiable, incluso si viene desde tu propia app.
Paso 3: criterio de backend
Para portfolio, muestra un endpoint que rechace emails invalidos, limites de texto y valores fuera de enum con mensajes consistentes.
Ejercicio practico para portfolio
Construye una mini API de cursos, usuarios o empleos con Express.js. Inclui rutas claras, validacion, errores consistentes y un README que explique como correr el proyecto. La meta es que un reclutador o cliente vea que podes pasar de tutorial a backend mantenible.
- Entregable: repositorio con endpoint, ejemplo de request y respuesta esperada.
- Checklist: status codes correctos, validacion, logs, seguridad basica y pruebas manuales reproducibles.
- Salida laboral: conecta el proyecto con rutas de carreras, empleos y servicios backend del marketplace.
Sigue con Express.js y Node.js para APIs profesionales
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.