Menu
CoddyTech

Zagnieżdżone trasy

Część sekcji Podstawy Express ścieżki Node.js w Coddy. Lekcja 17 z 20.

Recenzje należą do jednego przepisu, więc ich adresy URL znajdują się pod nim: /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);

Obiekt req.params routera zawiera tylko parametry z jego własnych ścieżek. :isbn w ścieżce montowania należy do aplikacji, więc wewnątrz routera ma wartość undefined, chyba że router został utworzony z opcją mergeParams: true.

Plik routes/reviews.js jest gotowy i zawiera obiekt reviews oraz funkcję pomocniczą hasRecipe(id).

challenge icon

Wyzwanie

Łatwy
  • GET /api/recipes/:id/reviews zwraca recenzje tego przepisu, początkowo [].
  • POST z { "stars", "text" } dodaje jedną recenzję i zwraca ją z kodem 201.
  • Nieznany przepis: 404 z { "error": "No such recipe" }.

Dodaj recenzję do przepisu 1, a następnie wyślij GET /api/recipes/1/reviews i GET /api/recipes/99/reviews.

Spróbuj swoich sił

import express from 'express';
import { recipes } from '../data.js';

// Recenzje według id przepisu, np. { 1: [{ stars: 5, text: 'Lovely' }] }.
const reviews = {};

const hasRecipe = (id) => recipes.some((recipe) => recipe.id === Number(id));

const router = express.Router();

// GET / wyświetla recenzje przepisu. POST / dodaje jedną recenzję.

export default router;

Wszystkie lekcje w sekcji Podstawy Express