Saltar al contenido

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:

js
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

  1. Define campos obligatorios y límites.

  2. Valida body, params y query por separado.

  3. Devuelve una forma estable para los errores.

  4. 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.

Navegador, API y base de datos conectados por solicitudes, consultas y respuestas en sentidos opuestos.
CursaloMapa de práctica
Del navegador a los datos

El 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
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 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.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.