Menu
CoddyTech

İç İç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.

challenge icon

Görev

Kolay
  • GET /api/recipes/:id/reviews o tarifin değerlendirmelerini döndürür; başlangıçta [].
  • POST ile { "stars", "text" } gönderildiğinde bir değerlendirme eklenir ve yanıt olarak 201 döndürülür.
  • Bilinmeyen bir tarif için: 404 ve { "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;

Express Temelleri bölümündeki tüm dersler