Lección 4 de 12 · Lectura y práctica
Routing: endpoints claros y consistentes
Routing: endpoints claros y consistentes El diseño de tus rutas es la primera impresión que tu API da a quien la consume. Unas rutas REST consistentes hacen que un desarrollador pueda adivinar el siguiente endpoint sin leer la.
Del concepto a la práctica
Taller de esta lección
Una ruta debe revelar qué recurso manipula y dejar la acción al método HTTP. La consistencia se comprueba comparando nombres, parámetros y estados, no contando cuántos endpoints existen.
Ejemplo resuelto
router.get('/courses/:id', getCourse);
router.post('/courses', createCourse);
router.patch('/courses/:id', updateCourse);
router.delete('/courses/:id', deleteCourse);POST /courses puede devolver 201 con el recurso creado; DELETE /courses/7 puede devolver 204 si la eliminación terminó sin cuerpo. Un filtro como ?level=basic pertenece a la query.
Si las rutas internas empiezan con /courses, monta el router mediante app.use("/api",router): la ruta pública queda /api/courses/7. Incluye 400 para ID inválido y404 para un ID válido ausente. Responde DELETE204 sin JSON; una baja diferida puede requerir202 según contrato. Esos fragmentos requieren Router y controladores definidos en tu app.
Pruébalo
Lista las operaciones de un recurso
courses.Asigna método, ruta y estado de éxito a cada operación.
Coloca las rutas en un
Routerpropio y móntalo bajo un prefijo.
Error frecuente: crear /createCourse y /removeCourse como verbos duplicados. Corrige usando el sustantivo plural y el método HTTP.
Ejercicio: diseña la ruta para listar cursos básicos y obtener el curso 7.
Comprueba tu resultado
GET /courses?level=basic y GET /courses/7, sin mezclar el filtro con el identificador.

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 ↗Routing: endpoints claros y consistentes
El diseño de tus rutas es la primera impresión que tu API da a quien la consume. Unas rutas REST consistentes hacen que un desarrollador pueda adivinar el siguiente endpoint sin leer la documentación. La idea central de REST es modelar recursos (sustantivos en plural) y usar los métodos HTTP como verbos sobre ellos.
El patrón de recursos
| Método y ruta | Acción | Status de éxito |
|---|---|---|
GET /courses | Listar todos | 200 |
GET /courses/:id | Obtener uno | 200 |
POST /courses | Crear | 201 |
PATCH /courses/:id | Actualizar parcial | 200 |
DELETE /courses/:id | Eliminar | 204 |
Organiza con express.Router
// src/routes/courses.js
import { Router } from 'express';
const router = Router();
router.get('/', listCourses);
router.get('/:id', getCourse);
router.post('/', createCourse);
router.patch('/:id', updateCourse);
router.delete('/:id', deleteCourse);
export default router;
// src/app.js
app.use('/courses', coursesRouter);
Consejo
- Usa plural:
/courses, no/course. - Las relaciones se anidan:
GET /courses/:id/lessons. - No metas verbos en la URL: di
DELETE /courses/5, noPOST /deleteCourse/5. - Los filtros van en query string:
GET /courses?level=beginner.
Elige bien el status code
El código de estado es información, no decoración. 201 Created indica que se creó un recurso; 204 No Content es perfecto para un DELETE sin cuerpo de respuesta; 404 cuando el recurso no existe; 400 cuando el cliente envió datos inválidos.
¿Qué ruta sigue mejor las convenciones REST para borrar el curso con id 5?
Ejercicio práctico
Objetivo: diseñar un conjunto de rutas REST coherente.
- Diseña los endpoints CRUD para dos recursos:
tasksycomments(los comentarios pertenecen a una tarea). - Anida la relación correctamente:
GET /tasks/:id/comments. - Para cada endpoint, escribe el status code de éxito y el de error más probable.
- Implementa el router de
tasksconexpress.Routeraunque los handlers solo devuelvanres.json({ ok: true }).
Entregable: una tabla con tus rutas, métodos y status codes, más el archivo del router.
Para recordar
- Recursos en plural, verbo en el método HTTP, filtros en la query.
- El status code comunica el resultado: 201 al crear, 204 al borrar, 404 si no existe.
express.Routermantiene cada recurso en su propio archivo.
Sigue con Node.js y APIs con Express
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.