Introduzione a Express
Prima di iniziare: le parole della lezione
- Express e app
- Express è il framework che organizza la gestione HTTP sopra Node.
express()crea un’applicazione, qui chiamataapp. - Routing, handler ed endpoint
- Il routing seleziona la funzione in base a metodo e percorso. L’handler gestisce la richiesta. Un endpoint è un punto di accesso dell’API, generalmente identificato da metodo e URL.
- Middleware
- Funzione nella catena di gestione di una richiesta: può eseguire controlli, preparare dati, rispondere o passare il controllo alla funzione successiva.
Express è un framework web che semplifica server, middleware e routing. Non sostituisce Node: vi gira sopra.
mkdir mini-express
cd mini-express
npm init -y
npm install express@5
// server.cjs
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Home Express'));
app.get('/saluti/:nome', (req, res) => {
res.json({ messaggio: `Ciao ${req.params.nome}` });
});
app.listen(3000, () => console.log('http://localhost:3000'));
Esegui node server.cjs. Esempio aggiuntivo: visita /saluti/Anna. Il callback della route riceve req (richiesta) e res (risposta).
Chi fa cosa, e perché
require("express") carica il pacchetto installato. express() costruisce l’app; app.get registra una route GET; app.listen crea e avvia il server HTTP. Express estende gli oggetti di Node con strumenti come res.send, res.json e req.params.
res.status(201) imposta lo status ma non invia da solo la risposta. res.send e res.json la inviano e normalmente la concludono. La concatenazione res.status(...).json(...) funziona perché status restituisce lo stesso oggetto risposta. Invia una sola risposta per richiesta.
Un altro esempio guidato
// mini.cjs — npm install express@5; poi node mini.cjs
const express = require('express');
const app = express();
app.get('/salute', (req, res) => {
return res.status(200).json({ servizio: 'attivo' });
});
app.use((req, res) => {
res.status(404).json({ errore: 'Percorso non trovato' });
});
app.listen(3000, '127.0.0.1', () => console.log('Server pronto sulla porta 3000'));
Come leggerlo e risultato atteso. GET /salute restituisce 200 e JSON. Una richiesta non gestita arriva al middleware finale e riceve 404. Il middleware senza percorso si applica a tutte le richieste che lo raggiungono. Deve stare dopo le route, altrimenti risponde prima di esse.
Prova tu. Aggiungi GET /versione prima della 404 e restituisci process.version. Prova anche POST /salute: avere una route GET non registra automaticamente una POST.