Creazione 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 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 allo
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 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.
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 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
Creazione 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 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 allo
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 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.
Grazie per i tuoi commenti!