פרמטרים בנתיב
חלק מהיחידה יסודות 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') מגדיר את הסטטוס ואז שולח את התשובה.
אתגר
קלכל מתכון מקבל דף משלו, בנתיב שכולל את המזהה שלו: /recipes/1, /recipes/2 וכן הלאה.
- ב־
server.js, הוסף נתיב אחד עבור/recipes/:id. הוא מוצא את המתכון ב־recipes(מתוךdata.js) שה־idשלו תואם למזהה שבנתיב. הוא שולח רק את הכותרת של המתכון הזה, כטקסט:/recipes/2שולח אתPancakes. - המזהה שבנתיב הוא מחרוזת, והמזהים ב־
data.jsהם מספרים, לכן יש להמיר אותו לפני שמשווים ביניהם. - כשאין מתכון עם המזהה הזה, קבע את הסטטוס ל־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');
});
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות Express
תרגלו בעצמכם: Express אונליין