İç İçe Rotalar
Coddy'nin Node.js Journey'sinin Express Temelleri bölümünün bir parçası. Ders 17 / 20.
Değerlendirmeler tek bir tarife aittir, bu nedenle URL’leri onun altında yer alır: /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);Bir yönlendiricinin req.params nesnesi yalnızca kendi yollarının parametrelerini içerir. Bağlama yolundaki :isbn uygulamaya aittir; bu nedenle yönlendirici içinde mergeParams: true ile oluşturulmadığı sürece değeri undefined olur.
routes/reviews.js dosyası, bir reviews nesnesi ve hasRecipe(id) yardımcı işleviyle hazır.
Görev
KolayGET /api/recipes/:id/reviewso tarifin değerlendirmelerini döndürür; başlangıçta[].POSTile{ "stars", "text" }gönderildiğinde bir değerlendirme eklenir ve yanıt olarak201döndürülür.- Bilinmeyen bir tarif için:
404ve{ "error": "No such recipe" }.
1 numaralı tarif için bir değerlendirme gönderin, ardından GET /api/recipes/1/reviews ve GET /api/recipes/99/reviews isteklerini gönderin.
Kendin dene
import express from 'express';
import { recipes } from '../data.js';
// Tarif id'sine göre yorumlar, örneğin { 1: [{ stars: 5, text: 'Lovely' }] }.
const reviews = {};
const hasRecipe = (id) => recipes.some((recipe) => recipe.id === Number(id));
const router = express.Router();
// GET / bir tarifin yorumlarını listeler. POST / bir yorum ekler.
export default router;