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

Esaminiamo 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. Funzionamento dell'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 allo 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 vengono definite è importante perché Express utilizza una strategia "first-match-wins". Verrà eseguita la prima route che corrisponde alla richiesta. In questo esempio, consideriamo 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 garantire che abbia 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 route order affects request handling in Express.js?

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

Can you give more examples of using URL parameters in routes?

Awesome!

Completion rate improved to 2.56

bookCreazione e Gestione delle Route in Express.js

Scorri per mostrare il menu

Esaminiamo 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. Funzionamento dell'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 allo 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 vengono definite è importante perché Express utilizza una strategia "first-match-wins". Verrà eseguita la prima route che corrisponde alla richiesta. In questo esempio, consideriamo 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 garantire che abbia 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