En aquest tema, aprendrem com gestionar les peticions i respostes en una API RESTful. Aquest és un aspecte crucial del desenvolupament d'APIs, ja que determina com els clients interactuen amb el servidor i com aquest respon a les seves sol·licituds.
Conceptes Clau
- Peticions HTTP
Una petició HTTP és una sol·licitud enviada per un client a un servidor. Les peticions HTTP tenen diversos components:
- Mètode HTTP: Indica l'acció que es vol realitzar (GET, POST, PUT, DELETE, etc.).
- URI (Uniform Resource Identifier): Identifica el recurs al qual es vol accedir.
- Headers: Contenen informació addicional sobre la petició (autenticació, tipus de contingut, etc.).
- Cos de la petició: Conté les dades que es volen enviar al servidor (només per a mètodes com POST i PUT).
- Respostes HTTP
Una resposta HTTP és la resposta del servidor a una petició del client. Les respostes HTTP també tenen diversos components:
- Codi d'estat: Indica el resultat de la petició (200 OK, 404 Not Found, etc.).
- Headers: Contenen informació addicional sobre la resposta (tipus de contingut, longitud del contingut, etc.).
- Cos de la resposta: Conté les dades que es volen enviar al client.
- Mètodes HTTP
Els mètodes HTTP més comuns són:
- GET: Recupera informació d'un recurs.
- POST: Crea un nou recurs.
- PUT: Actualitza un recurs existent.
- DELETE: Elimina un recurs.
Exemples Pràctics
- Configuració d'un Servidor Bàsic amb Node.js i Express
Primer, configurarem un servidor bàsic utilitzant Node.js i Express per gestionar les peticions i respostes.
Instal·lació de Node.js i Express
# Instal·lació de Node.js (si no està instal·lat) sudo apt-get install nodejs # Instal·lació de npm (Node Package Manager) sudo apt-get install npm # Creació d'un nou projecte mkdir api-restful cd api-restful npm init -y # Instal·lació d'Express npm install express
Creació del Servidor
// Importació del mòdul Express const express = require('express'); const app = express(); const port = 3000; // Middleware per gestionar JSON app.use(express.json()); // Ruta GET per obtenir informació app.get('/api/resource', (req, res) => { res.status(200).json({ message: 'Recurs obtingut correctament' }); }); // Ruta POST per crear un nou recurs app.post('/api/resource', (req, res) => { const data = req.body; res.status(201).json({ message: 'Recurs creat correctament', data }); }); // Ruta PUT per actualitzar un recurs existent app.put('/api/resource/:id', (req, res) => { const id = req.params.id; const data = req.body; res.status(200).json({ message: `Recurs amb ID ${id} actualitzat correctament`, data }); }); // Ruta DELETE per eliminar un recurs app.delete('/api/resource/:id', (req, res) => { const id = req.params.id; res.status(200).json({ message: `Recurs amb ID ${id} eliminat correctament` }); }); // Inici del servidor app.listen(port, () => { console.log(`Servidor escoltant a http://localhost:${port}`); });
- Prova de les Peticions amb Postman
Per provar les peticions, podem utilitzar una eina com Postman.
Prova d'una Petició GET
- Obre Postman.
- Selecciona el mètode GET.
- Introdueix l'URL:
http://localhost:3000/api/resource
. - Fes clic a "Send".
- Hauries de veure una resposta amb el missatge:
Recurs obtingut correctament
.
Prova d'una Petició POST
- Selecciona el mètode POST.
- Introdueix l'URL:
http://localhost:3000/api/resource
. - A la pestanya "Body", selecciona "raw" i "JSON".
- Introdueix el següent JSON:
{ "name": "Nou Recurs", "value": "123" }
- Fes clic a "Send".
- Hauries de veure una resposta amb el missatge:
Recurs creat correctament
i les dades enviades.
Exercicis Pràctics
Exercici 1: Afegir una Ruta PATCH
Afegiu una ruta PATCH per actualitzar parcialment un recurs. La ruta hauria de ser /api/resource/:id
.
Solució
// Ruta PATCH per actualitzar parcialment un recurs existent app.patch('/api/resource/:id', (req, res) => { const id = req.params.id; const data = req.body; res.status(200).json({ message: `Recurs amb ID ${id} actualitzat parcialment`, data }); });
Exercici 2: Gestió d'Errors
Afegiu gestió d'errors per a les rutes existents. Per exemple, si un recurs no es troba, hauríeu de retornar un codi d'estat 404.
Solució
// Ruta GET amb gestió d'errors app.get('/api/resource/:id', (req, res) => { const id = req.params.id; // Suposem que no trobem el recurs if (id !== '1') { return res.status(404).json({ message: 'Recurs no trobat' }); } res.status(200).json({ message: `Recurs amb ID ${id} obtingut correctament` }); });
Resum
En aquesta secció, hem après com gestionar les peticions i respostes en una API RESTful utilitzant Node.js i Express. Hem configurat un servidor bàsic, creat rutes per als mètodes HTTP comuns i provat les peticions amb Postman. També hem afegit exercicis pràctics per reforçar els conceptes apresos. En el proper tema, explorarem l'autenticació i l'autorització en APIs RESTful.
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