Menu
CoddyTech

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).

challenge icon

Tantangan

Mudah
  • GET /api/recipes/:id/reviews mengembalikan ulasan resep tersebut, awalnya [].
  • POST dengan { "stars", "text" } menambahkan satu ulasan dan mengembalikannya dengan 201.
  • Resep yang tidak dikenal: 404 dengan { "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