O Router do Express
Quando uma API cresce, declarar todas as rotas sobre app se torna
incontrolável. O Router permite agrupar as rotas de um recurso em seu
próprio módulo e montá-las sob um prefixo:
import { Router } from "express";
const router = Router();
router.get("/", listarProdutos); // GET /produtos
router.get("/:id", obterProduto); // GET /produtos/5
router.post("/", criarProduto); // POST /produtos
app.use("/produtos", router); // monta o grupo sob /produtos
Cada router é uma "mini-aplicação": tem suas próprias rotas e middleware, e é montado onde você quiser. Assim o código fica organizado por recurso.
Parâmetros de rota: req.params
Os segmentos dinâmicos da rota são marcados com : e chegam em
req.params (sempre como strings de texto):
router.get("/:id", (req, res) => {
const id = req.params.id; // /produtos/5 -> "5"
res.json({ id });
});
Query string: req.query
O que vem depois da ? na URL é a query string. O Express a
analisa e a deixa em req.query como um objeto:
// GET /produtos?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.paramsquantoreq.querychegam como strings. Se você precisar de um número, converta comNumber(...).