Menu
CoddyTech

Routenparameter

Teil des Abschnitts Express-Grundlagen der Node.js-Journey von Coddy. Lektion 4 von 23.

Die Rezeptbox wird viele Rezepte enthalten, und eine Route pro Rezept würde nie enden.

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

Ein Pfadteil, der mit einem Doppelpunkt beginnt, ist ein Routenparameter: Er passt auf jeden beliebigen Wert, und Express legt diesen Wert in req.params ab. GET /weather/oslo sendet Forecast for oslo.

Ein Parameter ist immer eine Zeichenkette. GET /rooms/12 liefert '12', und '12' === 12 ist falsch. Wandle ihn daher mit Number(...) um, bevor du ihn mit Zahlen vergleichst.

Wenn das angefragte Element nicht existiert, antworte mit dem Status 404: res.status(404).send('No such city') setzt den Status und sendet anschließend eine Antwort.

challenge icon

Aufgabe

Einfach

Jedes Rezept erhält eine eigene Seite unter einem Pfad, der seine ID enthält: /recipes/1, /recipes/2 und so weiter.

  1. Füge in server.js eine Route für /recipes/:id hinzu. Sie sucht in recipes (aus data.js) nach dem Rezept, dessen id mit der ID im Pfad übereinstimmt. Sie sendet nur den Titel dieses Rezepts als Text: /recipes/2 sendet Pancakes.
  2. Die ID aus dem Pfad ist eine Zeichenfolge, und die IDs in data.js sind Zahlen. Wandle sie also um, bevor du sie vergleichst.
  3. Wenn es kein Rezept mit dieser ID gibt, setze den Status auf 404 und sende den Text No such recipe.

Probier es aus: Drücke auf „Ausführen“ und sende /recipes/2. Du solltest Pancakes mit Status 200 sehen. Sende /recipes/4: Fish & Chips. Sende /recipes/99: No such recipe mit Status 404.

Probier es selbst

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

const app = express();

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

// type('text') sendet reinen Text, sodass jeder Titel in einer eigenen Zeile erscheint.
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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Express-Grundlagen

Übe selbstständig: Express-Playground