Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Creazione e Gestione delle Route in Express.js | Sviluppo di Applicazioni Web con Express.js
Sviluppo Backend con Node.js ed Express.js

bookCreazione e Gestione delle Route in Express.js

Analizziamo più nel dettaglio questi esempi pratici di creazione delle route in Express.js.

Route di base

Creazione di una semplice applicazione Express.js con route per diversi metodi HTTP. Ogni route gestisce una specifica richiesta HTTP e invia una risposta al client.

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('This is the homepage.');
});

app.post('/users', (req, res) => {
  // Handle user creation logic here.
  res.send('User created.');
});

app.put('/users/:id', (req, res) => {
  // Handle user update logic here.
  res.send(`User ${req.params.id} updated.`);
});

app.delete('/users/:id', (req, res) => {
  // Handle user deletion logic here.
  res.send(`User ${req.params.id} deleted.`);
});

app.listen(3000, () => {
  console.log('Server is running on port 3000.');
});
  • Route GET: Questa route risponde a una richiesta GET all'URL radice (/). Gli utenti che accedono alla homepage dell'applicazione riceveranno il messaggio "This is the homepage.";
  • Route POST: Questa route risponde a una richiesta POST all'URL /users. Tipicamente utilizzata per la creazione di nuovi record utente. La route include un commento per la gestione della logica di creazione dell'utente, che può essere sostituito con la logica effettiva;
  • Route PUT: Questa route risponde a una richiesta PUT all'URL /users/:id. Progettata per aggiornare i record utente in base al parametro :id. Come la route POST, include un commento per la gestione della logica di aggiornamento dell'utente;
  • Route DELETE: Questa route risponde a una richiesta DELETE all'URL /users/:id. Utilizzata per eliminare i record utente in base al parametro :id. Come per le altre route, include un commento per la gestione della logica di eliminazione dell'utente.

Nota

Se non sei sicuro dell'URL o desideri rivedere il concetto, consulta il seguente articolo: URL vs URI vs URN

Gestione dei Parametri URL

Focus sulla creazione di una route che gestisce i parametri URL. I parametri URL sono parti dinamiche di un URL che possono essere utilizzate per trasmettere dati al server. Ecco come funziona questo esempio:

app.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  // Fetch user data based on `userId`.
  res.send(`User details for ID ${userId}.`);
});
  • Definizione di una route utilizzando app.get('/users/:id', ...), dove :id è un parametro URL. Questo significa che quando un utente accede a un URL come /users/123, la variabile req.params.id conterrà il valore 123;
  • All'interno del gestore della route, accesso al parametro :id tramite req.params.id;
  • Possibilità di sostituire il commento con la logica per recuperare i dati dell'utente in base all'userId ottenuto dal parametro URL;
  • Risposta al client con le informazioni relative all'utente identificato dal parametro :id.

Ordine e Priorità delle Route

L'ordine in cui le route sono definite è importante perché Express utilizza una strategia "first-match-wins". Verrà eseguita la prima route che corrisponde alla richiesta. In questo esempio, si considera uno scenario in cui sono presenti sia una route specifica che una route catch-all:

app.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  // Fetch user data based on `userId`.
  res.send(`User details for ID ${userId}.`);
});

app.get('/users/*', (req, res) => {
  // Handle generic user-related requests.
  res.send('User-related request.');
});
  • La prima route, app.get('/users/:id', ...), è una route specifica che risponde a URL come /users/123. Gestisce le richieste con uno specifico ID utente;
  • La seconda route, app.get('/users/*', ...), è una route catch-all per richieste generiche relative agli utenti. Utilizza un carattere jolly (*) per corrispondere a qualsiasi URL che inizi con /users/, come /users/settings.

In questo scenario, l'ordine è fondamentale. La route specifica deve essere definita prima della route catch-all per garantirne la precedenza. Se si definisce prima la route catch-all, questa corrisponderà a tutti gli URL che iniziano con /users/ e la route specifica non avrà la possibilità di gestire le richieste con un ID utente.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 5

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

Can you explain more about how URL parameters work in Express.js?

What happens if I reverse the order of the specific and catch-all routes?

Can you give an example of handling multiple URL parameters in a route?

Awesome!

Completion rate improved to 2.56

bookCreazione e Gestione delle Route in Express.js

Scorri per mostrare il menu

Analizziamo più nel dettaglio questi esempi pratici di creazione delle route in Express.js.

Route di base

Creazione di una semplice applicazione Express.js con route per diversi metodi HTTP. Ogni route gestisce una specifica richiesta HTTP e invia una risposta al client.

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('This is the homepage.');
});

app.post('/users', (req, res) => {
  // Handle user creation logic here.
  res.send('User created.');
});

app.put('/users/:id', (req, res) => {
  // Handle user update logic here.
  res.send(`User ${req.params.id} updated.`);
});

app.delete('/users/:id', (req, res) => {
  // Handle user deletion logic here.
  res.send(`User ${req.params.id} deleted.`);
});

app.listen(3000, () => {
  console.log('Server is running on port 3000.');
});
  • Route GET: Questa route risponde a una richiesta GET all'URL radice (/). Gli utenti che accedono alla homepage dell'applicazione riceveranno il messaggio "This is the homepage.";
  • Route POST: Questa route risponde a una richiesta POST all'URL /users. Tipicamente utilizzata per la creazione di nuovi record utente. La route include un commento per la gestione della logica di creazione dell'utente, che può essere sostituito con la logica effettiva;
  • Route PUT: Questa route risponde a una richiesta PUT all'URL /users/:id. Progettata per aggiornare i record utente in base al parametro :id. Come la route POST, include un commento per la gestione della logica di aggiornamento dell'utente;
  • Route DELETE: Questa route risponde a una richiesta DELETE all'URL /users/:id. Utilizzata per eliminare i record utente in base al parametro :id. Come per le altre route, include un commento per la gestione della logica di eliminazione dell'utente.

Nota

Se non sei sicuro dell'URL o desideri rivedere il concetto, consulta il seguente articolo: URL vs URI vs URN

Gestione dei Parametri URL

Focus sulla creazione di una route che gestisce i parametri URL. I parametri URL sono parti dinamiche di un URL che possono essere utilizzate per trasmettere dati al server. Ecco come funziona questo esempio:

app.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  // Fetch user data based on `userId`.
  res.send(`User details for ID ${userId}.`);
});
  • Definizione di una route utilizzando app.get('/users/:id', ...), dove :id è un parametro URL. Questo significa che quando un utente accede a un URL come /users/123, la variabile req.params.id conterrà il valore 123;
  • All'interno del gestore della route, accesso al parametro :id tramite req.params.id;
  • Possibilità di sostituire il commento con la logica per recuperare i dati dell'utente in base all'userId ottenuto dal parametro URL;
  • Risposta al client con le informazioni relative all'utente identificato dal parametro :id.

Ordine e Priorità delle Route

L'ordine in cui le route sono definite è importante perché Express utilizza una strategia "first-match-wins". Verrà eseguita la prima route che corrisponde alla richiesta. In questo esempio, si considera uno scenario in cui sono presenti sia una route specifica che una route catch-all:

app.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  // Fetch user data based on `userId`.
  res.send(`User details for ID ${userId}.`);
});

app.get('/users/*', (req, res) => {
  // Handle generic user-related requests.
  res.send('User-related request.');
});
  • La prima route, app.get('/users/:id', ...), è una route specifica che risponde a URL come /users/123. Gestisce le richieste con uno specifico ID utente;
  • La seconda route, app.get('/users/*', ...), è una route catch-all per richieste generiche relative agli utenti. Utilizza un carattere jolly (*) per corrispondere a qualsiasi URL che inizi con /users/, come /users/settings.

In questo scenario, l'ordine è fondamentale. La route specifica deve essere definita prima della route catch-all per garantirne la precedenza. Se si definisce prima la route catch-all, questa corrisponderà a tutti gli URL che iniziano con /users/ e la route specifica non avrà la possibilità di gestire le richieste con un ID utente.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 5
some-alt