En aquest tema, aprendrem com gestionar les rutes en una aplicació Express. Les rutes són una part fonamental de qualsevol aplicació web, ja que determinen com es gestionen les peticions HTTP i com es responen. Express proporciona una manera senzilla i flexible de definir rutes.
Conceptes Clau
- Ruta: Una ruta és una combinació d'un mètode HTTP (GET, POST, PUT, DELETE, etc.) i un camí URL que defineix com es gestionen les peticions.
- Mètodes HTTP: Els mètodes HTTP més comuns són GET, POST, PUT i DELETE. Cada mètode s'utilitza per a diferents tipus d'operacions.
- Paràmetres de Ruta: Els paràmetres de ruta permeten capturar valors específics de l'URL.
- Middleware de Ruta: Middleware específic per a una ruta que s'executa abans que la ruta principal gestioni la petició.
Definint Rutes Bàsiques
Exemple de Codi
const express = require('express'); const app = express(); const port = 3000; // Ruta GET bàsica app.get('/', (req, res) => { res.send('Hola, món!'); }); // Ruta GET amb paràmetres app.get('/usuari/:id', (req, res) => { const userId = req.params.id; res.send(`Usuari ID: ${userId}`); }); // Ruta POST app.post('/usuari', (req, res) => { res.send('Usuari creat!'); }); // Ruta PUT app.put('/usuari/:id', (req, res) => { const userId = req.params.id; res.send(`Usuari ID: ${userId} actualitzat!`); }); // Ruta DELETE app.delete('/usuari/:id', (req, res) => { const userId = req.params.id; res.send(`Usuari ID: ${userId} eliminat!`); }); app.listen(port, () => { console.log(`Servidor escoltant a http://localhost:${port}`); });
Explicació del Codi
- Ruta GET bàsica: Aquesta ruta respon a les peticions GET a la URL arrel (
/
) amb el missatge "Hola, món!". - Ruta GET amb paràmetres: Aquesta ruta captura un paràmetre de ruta (
id
) i el retorna en la resposta. - Ruta POST: Aquesta ruta respon a les peticions POST a la URL
/usuari
amb el missatge "Usuari creat!". - Ruta PUT: Aquesta ruta captura un paràmetre de ruta (
id
) i respon amb un missatge d'actualització. - Ruta DELETE: Aquesta ruta captura un paràmetre de ruta (
id
) i respon amb un missatge d'eliminació.
Paràmetres de Ruta
Els paràmetres de ruta són valors dinàmics que es poden capturar de l'URL. S'utilitzen per identificar recursos específics.
Exemple de Codi
app.get('/producte/:productId', (req, res) => { const productId = req.params.productId; res.send(`Producte ID: ${productId}`); });
Explicació del Codi
- Aquesta ruta captura el paràmetre
productId
de l'URL i el retorna en la resposta.
Middleware de Ruta
El middleware de ruta s'executa abans que la ruta principal gestioni la petició. Es pot utilitzar per a validacions, autenticació, etc.
Exemple de Codi
const middleware = (req, res, next) => { console.log('Middleware executat!'); next(); }; app.get('/protegida', middleware, (req, res) => { res.send('Aquesta és una ruta protegida!'); });
Explicació del Codi
- Middleware: Aquesta funció middleware es registra per a la ruta
/protegida
i s'executa abans que la ruta principal gestioni la petició. - next(): La funció
next()
s'utilitza per passar el control a la següent funció middleware o ruta.
Exercicis Pràctics
Exercici 1: Crear Rutes Bàsiques
- Crea una aplicació Express.
- Defineix les següents rutes:
- GET
/
: Respon amb "Benvingut a la meva aplicació!" - GET
/usuari/:nom
: Respon amb "Hola, [nom]!" - POST
/usuari
: Respon amb "Usuari creat!" - PUT
/usuari/:id
: Respon amb "Usuari [id] actualitzat!" - DELETE
/usuari/:id
: Respon amb "Usuari [id] eliminat!"
- GET
Solució
const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Benvingut a la meva aplicació!'); }); app.get('/usuari/:nom', (req, res) => { const nom = req.params.nom; res.send(`Hola, ${nom}!`); }); app.post('/usuari', (req, res) => { res.send('Usuari creat!'); }); app.put('/usuari/:id', (req, res) => { const userId = req.params.id; res.send(`Usuari ${userId} actualitzat!`); }); app.delete('/usuari/:id', (req, res) => { const userId = req.params.id; res.send(`Usuari ${userId} eliminat!`); }); app.listen(port, () => { console.log(`Servidor escoltant a http://localhost:${port}`); });
Exercici 2: Middleware de Ruta
- Crea una aplicació Express.
- Defineix una ruta
/admin
que utilitzi un middleware per verificar si l'usuari està autenticat abans de respondre amb "Benvingut a l'àrea d'administració!".
Solució
const express = require('express'); const app = express(); const port = 3000; const autenticacioMiddleware = (req, res, next) => { const autenticat = true; // Canvia això per la teva lògica d'autenticació if (autenticat) { next(); } else { res.status(401).send('No autoritzat'); } }; app.get('/admin', autenticacioMiddleware, (req, res) => { res.send('Benvingut a l\'àrea d\'administració!'); }); app.listen(port, () => { console.log(`Servidor escoltant a http://localhost:${port}`); });
Conclusió
En aquesta secció, hem après com definir rutes en una aplicació Express, com utilitzar paràmetres de ruta i com implementar middleware de ruta. Aquestes habilitats són fonamentals per construir aplicacions web robustes i escalables amb Express. En el següent mòdul, explorarem com gestionar errors en una aplicació Express.
Curs de Node.js
Mòdul 1: Introducció a Node.js
Mòdul 2: Conceptes Bàsics
Mòdul 3: Sistema de Fitxers i I/O
Mòdul 4: HTTP i Servidors Web
Mòdul 5: NPM i Gestió de Paquets
Mòdul 6: Framework Express.js
- Introducció a Express.js
- Configuració d'una Aplicació Express
- Middleware
- Routing en Express
- Gestió d'Errors
Mòdul 7: Bases de Dades i ORMs
- Introducció a les Bases de Dades
- Utilitzar MongoDB amb Mongoose
- Utilitzar Bases de Dades SQL amb Sequelize
- Operacions CRUD
Mòdul 8: Autenticació i Autorització
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries amb Mocha i Chai
- Proves d'Integració
- Depuració d'Aplicacions Node.js
Mòdul 10: Temes Avançats
Mòdul 11: Desplegament i DevOps
- Variables d'Entorn
- Utilitzar PM2 per a la Gestió de Processos
- Desplegar a Heroku
- Integració i Desplegament Continu