Rute Bersarang
Termasuk bagian Dasar-Dasar Express dalam perjalanan Node.js di Coddy. Pelajaran 17 dari 20.
Ulasan terkait dengan satu resep, jadi URL-nya berada di bawah resep tersebut: /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 pada router hanya menyimpan parameter dari path miliknya sendiri. :isbn pada path mount adalah milik app, jadi nilainya di dalam router adalah undefined, kecuali router dibuat dengan mergeParams: true.
routes/reviews.js sudah siap, dengan object reviews dan helper hasRecipe(id).
Tantangan
MudahGET /api/recipes/:id/reviewsmengembalikan ulasan resep tersebut, awalnya[].POSTdengan{ "stars", "text" }menambahkan satu ulasan dan mengembalikannya dengan201.- Resep yang tidak dikenal:
404dengan{ "error": "No such recipe" }.
Kirim ulasan untuk resep 1, lalu kirim GET /api/recipes/1/reviews dan GET /api/recipes/99/reviews.
Coba sendiri
import express from 'express';
import { recipes } from '../data.js';
// Ulasan berdasarkan id resep, seperti { 1: [{ stars: 5, text: 'Lovely' }] }.
const reviews = {};
const hasRecipe = (id) => recipes.some((recipe) => recipe.id === Number(id));
const router = express.Router();
// GET / menampilkan daftar ulasan resep. POST / menambahkan satu ulasan.
export default router;
Semua pelajaran di Dasar-Dasar Express
Latihan sendiri: Playground Express