En aquest tema, aprendrem a crear un servidor bàsic per a una API RESTful utilitzant Node.js i Express, un dels frameworks més populars per al desenvolupament d'APIs en JavaScript. Aquest servidor serà capaç de gestionar peticions HTTP bàsiques i respondre amb dades en format JSON.
Objectius
- Configurar un projecte Node.js.
- Instal·lar i configurar Express.
- Crear rutes bàsiques per a l'API.
- Gestionar peticions GET i POST.
- Configuració del projecte Node.js
Pas 1: Instal·lació de Node.js
Si encara no tens Node.js instal·lat, pots descarregar-lo i instal·lar-lo des del lloc web oficial. Assegura't de tenir també npm (Node Package Manager), que s'instal·la automàticament amb Node.js.
Pas 2: Inicialitzar el projecte
Crea una nova carpeta per al teu projecte i inicialitza un nou projecte Node.js utilitzant npm.
Aquestes comandes crearan una nova carpeta anomenada api-server i inicialitzaran un nou projecte Node.js amb un fitxer package.json per gestionar les dependències del projecte.
Pas 3: Instal·lació d'Express
Instal·la Express utilitzant npm.
- Creació del servidor bàsic amb Express
Pas 1: Crear el fitxer principal
Crea un fitxer anomenat index.js a la carpeta del projecte. Aquest fitxer serà el punt d'entrada del nostre servidor.
Pas 2: Configurar el servidor
Obre index.js i afegeix el següent codi per configurar un servidor bàsic amb Express.
const express = require('express');
const app = express();
const port = 3000;
// Middleware per parsejar JSON
app.use(express.json());
// Ruta bàsica
app.get('/', (req, res) => {
res.send('Hola, món!');
});
// Iniciar el servidor
app.listen(port, () => {
console.log(`Servidor escoltant a http://localhost:${port}`);
});Explicació del codi
const express = require('express');: Importa el mòdul Express.const app = express();: Crea una instància de l'aplicació Express.const port = 3000;: Defineix el port en el qual el servidor escoltarà les peticions.app.use(express.json());: Afegeix un middleware per parsejar les peticions amb cos en format JSON.app.get('/', (req, res) => { res.send('Hola, món!'); });: Defineix una ruta GET bàsica que respon amb "Hola, món!".app.listen(port, () => { console.log(Servidor escoltant a http://localhost:${port}); });: Inicia el servidor i fa que escolti al port 3000.
Pas 3: Executar el servidor
Executa el servidor utilitzant node.
Si tot ha anat bé, hauràs de veure el missatge Servidor escoltant a http://localhost:3000 a la consola. Ara pots obrir el navegador i anar a http://localhost:3000 per veure la resposta "Hola, món!".
- Gestió de peticions GET i POST
Ruta GET
Afegeix una nova ruta GET que retorni una llista d'elements en format JSON.
app.get('/items', (req, res) => {
const items = [
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' },
{ id: 3, name: 'Item 3' }
];
res.json(items);
});Ruta POST
Afegeix una nova ruta POST que permeti afegir un nou element a la llista.
app.post('/items', (req, res) => {
const newItem = req.body;
newItem.id = Date.now(); // Assignar un ID únic
res.status(201).json(newItem);
});Explicació del codi
app.get('/items', (req, res) => { ... });: Defineix una ruta GET que retorna una llista d'elements en format JSON.app.post('/items', (req, res) => { ... });: Defineix una ruta POST que rep un nou element en el cos de la petició i el retorna amb un ID únic assignat.
Exercici Pràctic
Objectiu
Crear una API bàsica que gestioni una llista de tasques (to-do list) amb operacions CRUD (Create, Read, Update, Delete).
Instruccions
- Crea una nova ruta GET
/tasksque retorni una llista de tasques. - Crea una nova ruta POST
/tasksque permeti afegir una nova tasca. - Crea una nova ruta PUT
/tasks/:idque permeti actualitzar una tasca existent. - Crea una nova ruta DELETE
/tasks/:idque permeti eliminar una tasca existent.
Solució
const express = require('express');
const app = express();
const port = 3000;
app.use(express.json());
let tasks = [
{ id: 1, title: 'Tascar 1', completed: false },
{ id: 2, title: 'Tascar 2', completed: true }
];
app.get('/tasks', (req, res) => {
res.json(tasks);
});
app.post('/tasks', (req, res) => {
const newTask = req.body;
newTask.id = Date.now();
tasks.push(newTask);
res.status(201).json(newTask);
});
app.put('/tasks/:id', (req, res) => {
const taskId = parseInt(req.params.id);
const updatedTask = req.body;
tasks = tasks.map(task => (task.id === taskId ? { ...task, ...updatedTask } : task));
res.json(updatedTask);
});
app.delete('/tasks/:id', (req, res) => {
const taskId = parseInt(req.params.id);
tasks = tasks.filter(task => task.id !== taskId);
res.status(204).send();
});
app.listen(port, () => {
console.log(`Servidor escoltant a http://localhost:${port}`);
});Explicació del codi
let tasks = [ ... ];: Defineix una llista de tasques inicials.app.get('/tasks', (req, res) => { ... });: Retorna la llista de tasques.app.post('/tasks', (req, res) => { ... });: Afegeix una nova tasca a la llista.app.put('/tasks/:id', (req, res) => { ... });: Actualitza una tasca existent.app.delete('/tasks/:id', (req, res) => { ... });: Elimina una tasca existent.
Conclusió
En aquesta secció, hem après a configurar un projecte Node.js, instal·lar i configurar Express, i crear un servidor bàsic capaç de gestionar peticions GET i POST. També hem vist com implementar operacions CRUD bàsiques per a una llista de tasques. Aquestes habilitats són fonamentals per al desenvolupament d'APIs RESTful més complexes. En el següent tema, explorarem com gestionar peticions i respostes de manera més avançada.
Curs de REST API: Principis de Disseny i Desenvolupament d'APIs RESTful
Mòdul 1: Introducció a les APIs RESTful
Mòdul 2: Disseny d'APIs RESTful
- Principis de disseny d'APIs RESTful
- Recursos i URIs
- Mètodes HTTP
- Codis d'estat HTTP
- Versionat d'APIs
- Documentació d'APIs
Mòdul 3: Desenvolupament d'APIs RESTful
- Configuració de l'entorn de desenvolupament
- Creació d'un servidor bàsic
- Gestió de peticions i respostes
- Autenticació i autorització
- Gestió d'errors
- Proves i validació
Mòdul 4: Bones Pràctiques i Seguretat
- Bones pràctiques en el disseny d'APIs
- Seguretat en APIs RESTful
- Rate limiting i throttling
- CORS i polítiques de seguretat
Mòdul 5: Eines i Frameworks
- Postman per a proves d'APIs
- Swagger per a documentació
- Frameworks populars per a APIs RESTful
- Integració contínua i desplegament
