Menu
CoddyTech

Parametri delle route

Fa parte della sezione Fondamenti di Express del percorso Node.js di Coddy. Lezione 4 di 23.

La ricettario conterrà molte ricette, e una route per ogni ricetta non finirebbe mai.

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

Una parte del percorso che inizia con i due punti è un parametro della route: corrisponde a qualsiasi valore ed Express inserisce quel valore in req.params. GET /weather/oslo invia Forecast for oslo.

Un parametro è sempre una stringa. GET /rooms/12 restituisce '12', e '12' === 12 è false, quindi convertilo con Number(...) prima di confrontarlo con dei numeri.

Quando ciò che viene richiesto non esiste, rispondi con lo stato 404: res.status(404).send('No such city') imposta lo stato, poi invia la risposta.

challenge icon

Sfida

Facile

Ogni ricetta ha la propria pagina, con un percorso che contiene il suo id: /recipes/1, /recipes/2 e così via.

  1. In server.js, aggiungi una route per /recipes/:id. Trova in recipes (da data.js) la ricetta il cui id corrisponde all'id nel percorso. Invia solo il titolo di quella ricetta, come testo: /recipes/2 invia Pancakes.
  2. L'id del percorso è una stringa e gli id in data.js sono numeri, quindi convertilo prima del confronto.
  3. Se nessuna ricetta ha quell'id, imposta lo stato su 404 e invia il testo No such recipe.

Prova: premi «Esegui» e invia /recipes/2. Dovresti vedere Pancakes con stato 200. Invia /recipes/4: Fish & Chips. Invia /recipes/99: No such recipe con stato 404.

Provalo tu

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

const app = express();

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

// type('text') invia testo semplice, quindi ogni titolo appare su una riga a sé.
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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti di Express

Esercitati da solo: Playground Express