El Router de Express
Cuando una API crece, declarar todas las rutas sobre app se vuelve
inmanejable. El Router permite agrupar las rutas de un recurso en su
propio módulo y montarlas bajo un prefijo:
import { Router } from "express";
const router = Router();
router.get("/", listarProductos); // GET /productos
router.get("/:id", obtenerProducto); // GET /productos/5
router.post("/", crearProducto); // POST /productos
app.use("/productos", router); // monta el grupo bajo /productos
Cada router es una "mini-aplicación": tiene sus propias rutas y middleware, y se monta donde quieras. Así el código queda organizado por recurso.
Parámetros de ruta: req.params
Los segmentos dinámicos de la ruta se marcan con : y llegan en
req.params (siempre como cadenas de texto):
router.get("/:id", (req, res) => {
const id = req.params.id; // /productos/5 -> "5"
res.json({ id });
});
Query string: req.query
Lo que viene después de la ? en la URL es la query string. Express la
parsea y la deja en req.query como un objeto:
// GET /productos?page=2&limit=10
router.get("/", (req, res) => {
const page = req.query.page; // "2"
const limit = req.query.limit; // "10"
res.json({ page, limit });
});
Tanto
req.paramscomoreq.queryllegan como strings. Si necesitas un número, conviértelo conNumber(...).