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