Menu
CoddyTech

נתיבים מקוננים

חלק מהיחידה יסודות Express במסלול ה-Node.js של Coddy. שיעור 17 מתוך 20.

ביקורות שייכות למתכון אחד, ולכן כתובות ה-URL שלהן נמצאות תחתיו: /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 של נתב מכיל רק את הפרמטרים של הנתיבים שלו. :isbn בנתיב ההרכבה שייך לאפליקציה, ולכן בתוך הנתב הערך שלו הוא undefined, אלא אם הנתב נוצר עם mergeParams: true.

הקובץ routes/reviews.js מוכן, ובו אובייקט reviews ופונקציית עזר hasRecipe(id).

challenge icon

אתגר

קל
  • GET /api/recipes/:id/reviews מחזיר את הביקורות של המתכון הזה, ובהתחלה [].
  • POST עם { "stars", "text" } מוסיף ביקורת ומחזיר אותה עם 201.
  • מתכון לא מוכר: 404 עם { "error": "No such recipe" }.

פרסם ביקורת על מתכון 1, ואז שלח GET /api/recipes/1/reviews ו-GET /api/recipes/99/reviews.

נסו בעצמכם

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

// ביקורות לפי id של מתכון, למשל { 1: [{ stars: 5, text: 'Lovely' }] }.
const reviews = {};

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

const router = express.Router();

// GET / מציג את הביקורות על מתכון. POST / מוסיף ביקורת.

export default router;

כל השיעורים ביחידה יסודות Express