Routes imbriquées
Fait partie de la section Les bases d’Express du Journey Node.js de Coddy. Leçon 17 sur 20.
Les avis appartiennent à une recette, leurs URL se trouvent donc sous celle-ci : /api/recipes/2/reviews.
const chapters = express.Router({ mergeParams: true });
chapters.get('/', (req, res) => {
res.json(chaptersOf(req.params.isbn));
});
app.use('/api/books/:isbn/chapters', chapters);req.params d'un routeur ne contient que les paramètres de ses propres chemins. Le :isbn du chemin de montage appartient à l'application ; il vaut donc undefined à l'intérieur du routeur, sauf si celui-ci est créé avec mergeParams: true.
routes/reviews.js est prêt, avec un objet reviews et un utilitaire hasRecipe(id).
Défi
FacileGET /api/recipes/:id/reviewsrenvoie les avis de cette recette,[]au départ.POSTavec{ "stars", "text" }en ajoute un et le renvoie avec le statut201.- Recette inconnue :
404avec{ "error": "No such recipe" }.
Publiez un avis pour la recette 1, puis envoyez GET /api/recipes/1/reviews et GET /api/recipes/99/reviews.
Essayez vous-même
import express from 'express';
import { recipes } from '../data.js';
// Avis classés par id de recette, comme { 1: [{ stars: 5, text: 'Lovely' }] }.
const reviews = {};
const hasRecipe = (id) => recipes.some((recipe) => recipe.id === Number(id));
const router = express.Router();
// GET / liste les avis d’une recette. POST / en ajoute un.
export default router;
Toutes les leçons de Les bases d’Express
1Votre premier serveur
Bonjour, ExpressLe module httpPlus de routesParamètres de route