Lección 2 de 12 · Lectura y práctica
Rutas, controladores y servicios
Respuesta rapida: Una ruta conecta un metodo HTTP y una URL con una funcion. Un controlador interpreta el request y devuelve la respuesta. Un servicio contiene la regla de negocio reutilizable. Que vas a construir Una ruta.
Del concepto a la práctica
Taller de esta lección
Separar ruta, controlador y servicio permite cambiar una regla sin reescribir el transporte HTTP. La ruta enlaza método y URL; el controlador traduce request y response; el servicio decide si la operación es válida y reutilizable.
Ejemplo resuelto
En POST /enrollments, el controlador extrae courseId y el usuario autenticado. El servicio comprueba que el curso exista y que no haya una inscripción previa. Si todo es correcto, devuelve una inscripción creada; si ya existe, comunica un conflicto en lugar de insertar otra fila.
Una comprobación de existencia seguida de inserción puede sufrir una carrera si llegan dos solicitudes a la vez. La base debe imponer también una restricción única (userId, courseId); traduce la violación a 409. Si eliges semántica idempotente, documenta y prueba ese contrato distinto en lugar de alternar 201 y 409 sin criterio.
Pruébalo
Escribe qué datos recibe el controlador.
Expresa la regla: un usuario no puede inscribirse dos veces al mismo curso.
Haz que el servicio devuelva resultados de dominio, no objetos de Express.
Deja al controlador la elección del status y del cuerpo HTTP.
Error frecuente: poner una consulta y tres condiciones dentro de la ruta. Corrígelo extrayendo la regla a un servicio que puedas probar sin simular todo el servidor.
Comprueba tu resultado
Empieza con usuarios u1, cursos c1 y c2, y ninguna inscripción. La primera inscripción de u1 en c1 debe producir creación; una segunda solicitud idéntica debe producir conflicto; u1 sí debe poder inscribirse en c2.

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
Una ruta conecta un metodo HTTP y una URL con una funcion. Un controlador interpreta el request y devuelve la respuesta. Un servicio contiene la regla de negocio reutilizable.
Paso 1: criterio de backend
Separar capas evita que una ruta termine mezclando validacion, SQL, permisos, llamadas externas y formato de respuesta en una sola funcion dificil de testear.
Paso 2: criterio de backend
Un ejemplo profesional seria POST /courses para crear un curso, un controlador que valida input y un CourseService que decide si el usuario puede publicar.
Paso 3: criterio de backend
El objetivo no es crear carpetas por moda. Es hacer que el backend pueda crecer sin que cada cambio rompa rutas no relacionadas.
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.