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
/usuariamb 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
productIdde 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
/protegidai 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
/adminque 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
