Menu
CoddyTech

פרמטרים בנתיב

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

בתיבת המתכונים יהיו הרבה מתכונים, ונתיב אחד לכל מתכון לעולם לא יסתיים.

app.get('/weather/:city', (req, res) => {
    res.send('Forecast for ' + req.params.city);
});

חלק בנתיב שמתחיל בנקודתיים הוא פרמטר נתיב: הוא תואם לכל ערך, ו-Express מציב את הערך הזה בתוך req.params. GET /weather/oslo שולח Forecast for oslo.

פרמטר הוא תמיד מחרוזת. GET /rooms/12 מחזיר '12', ו-'12' === 12 הוא false, לכן יש להמיר אותו באמצעות Number(...) לפני שמשווים אותו למספרים.

כשהדבר המבוקש אינו קיים, יש להשיב עם סטטוס 404: res.status(404).send('No such city') מגדיר את הסטטוס ואז שולח את התשובה.

challenge icon

אתגר

קל

כל מתכון מקבל דף משלו, בנתיב שכולל את המזהה שלו: /recipes/1, /recipes/2 וכן הלאה.

  1. ב־server.js, הוסף נתיב אחד עבור /recipes/:id. הוא מוצא את המתכון ב־recipes (מתוך data.js) שה־id שלו תואם למזהה שבנתיב. הוא שולח רק את הכותרת של המתכון הזה, כטקסט: /recipes/2 שולח את Pancakes.
  2. המזהה שבנתיב הוא מחרוזת, והמזהים ב־data.js הם מספרים, לכן יש להמיר אותו לפני שמשווים ביניהם.
  3. כשאין מתכון עם המזהה הזה, קבע את הסטטוס ל־404 ושלח את הטקסט No such recipe.

נסה זאת: לחץ על Run ושלח את /recipes/2. אתה אמור לראות את Pancakes עם סטטוס 200. שלח את /recipes/4: Fish & Chips. שלח את /recipes/99: No such recipe עם סטטוס 404.

נסו בעצמכם

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

const app = express();

app.get('/', (req, res) => {
    res.send('Welcome to Recipe Box');
});

// type('text') שולח טקסט פשוט, כך שכל כותרת מופיעה בשורה משלה.
app.get('/recipes', (req, res) => {
    res.type('text').send(recipes.map((recipe) => recipe.title).join('\n'));
});

app.get('/about', (req, res) => {
    res.send('Recipe Box collects family recipes.');
});

app.listen(3000, () => {
    console.log('Recipe Box is running on port 3000');
});
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

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

תרגלו בעצמכם: Express אונליין