Creazione 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 variabilereq.params.idconterrà il valore123; - All'interno del gestore della route, accesso al parametro
:idtramitereq.params.id; - Possibilità di sostituire il commento con la logica per recuperare i dati dell'utente in base all'
userIdottenuto 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.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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
Creazione 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 variabilereq.params.idconterrà il valore123; - All'interno del gestore della route, accesso al parametro
:idtramitereq.params.id; - Possibilità di sostituire il commento con la logica per recuperare i dati dell'utente in base all'
userIdottenuto 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.
Grazie per i tuoi commenti!