En aquest tema, aprendrem com assegurar-nos que la nostra API RESTful funcioni correctament mitjançant proves i validació. Les proves són una part essencial del desenvolupament de programari, ja que ens permeten detectar errors i assegurar-nos que la nostra API compleix amb els requisits especificats.
Objectius del Tema
- Entendre la importància de les proves en el desenvolupament d'APIs.
- Aprendre a escriure proves unitàries per a les nostres rutes i funcionalitats.
- Conèixer les eines i frameworks més utilitzats per a les proves d'APIs.
- Implementar proves d'integració per assegurar-nos que els components de l'API funcionen correctament junts.
- Validar les dades d'entrada i sortida per garantir la integritat de la informació.
- Importància de les Proves en el Desenvolupament d'APIs
Les proves són crucials per diverses raons:
- Detecció d'Errors: Ens ajuden a identificar i corregir errors abans que l'API sigui utilitzada en producció.
- Qualitat del Codi: Milloren la qualitat del codi assegurant que cada part de l'API funcioni com s'espera.
- Mantenibilitat: Faciliten el manteniment del codi, ja que les proves poden detectar errors introduïts durant els canvis o millores.
- Confiança: Proporcionen confiança als desenvolupadors i usuaris que l'API és fiable i robusta.
- Proves Unitàries
Les proves unitàries són proves que verifiquen el funcionament de components individuals de l'API, com ara funcions o mètodes. A continuació, es mostra un exemple de prova unitària utilitzant el framework de proves Jest amb Node.js i Express.
Exemple de Prova Unitària
Instal·lació de Jest
Configuració de Jest
Afegiu el següent al vostre package.json
:
Exemple de Prova Unitària per a una Ruta
Suposem que tenim una ruta que retorna una llista d'usuaris:
// users.js const express = require('express'); const router = express.Router(); router.get('/users', (req, res) => { res.status(200).json([{ id: 1, name: 'John Doe' }]); }); module.exports = router;
Ara, escrivim una prova unitària per a aquesta ruta:
// users.test.js const request = require('supertest'); const express = require('express'); const usersRouter = require('./users'); const app = express(); app.use('/api', usersRouter); describe('GET /api/users', () => { it('should return a list of users', async () => { const res = await request(app).get('/api/users'); expect(res.statusCode).toEqual(200); expect(res.body).toEqual([{ id: 1, name: 'John Doe' }]); }); });
Per executar les proves, utilitzeu:
- Eines i Frameworks per a Proves d'APIs
Hi ha diverses eines i frameworks que poden ajudar-vos a provar les vostres APIs:
- Jest: Un framework de proves JavaScript amb una API senzilla i funcionalitats avançades.
- Mocha: Un altre framework de proves JavaScript popular, sovint utilitzat amb Chai per a les assercions.
- Supertest: Una llibreria per a proves HTTP que es pot utilitzar amb qualsevol framework de proves.
- Postman: Una eina GUI per a proves d'APIs que permet crear col·leccions de proves i automatitzar-les.
- Proves d'Integració
Les proves d'integració verifiquen que diferents components de l'API funcionen correctament junts. A continuació, es mostra un exemple de prova d'integració utilitzant Mocha i Chai.
Exemple de Prova d'Integració
Instal·lació de Mocha i Chai
Configuració de Mocha
Afegiu el següent al vostre package.json
:
Exemple de Prova d'Integració
// integration.test.js const chai = require('chai'); const chaiHttp = require('chai-http'); const app = require('./app'); // La vostra aplicació Express chai.use(chaiHttp); const expect = chai.expect; describe('API Integration Tests', () => { it('should return a list of users', (done) => { chai.request(app) .get('/api/users') .end((err, res) => { expect(res).to.have.status(200); expect(res.body).to.be.an('array'); done(); }); }); });
Per executar les proves, utilitzeu:
- Validació de Dades
La validació de dades és essencial per assegurar-nos que les dades d'entrada i sortida compleixen amb els requisits esperats. Això ajuda a prevenir errors i millorar la seguretat de l'API.
Exemple de Validació amb Joi
Instal·lació de Joi
Exemple de Validació
// validation.js const Joi = require('joi'); const userSchema = Joi.object({ name: Joi.string().min(3).required(), email: Joi.string().email().required() }); module.exports = userSchema;
Utilització de la Validació en una Ruta
// users.js const express = require('express'); const router = express.Router(); const userSchema = require('./validation'); router.post('/users', (req, res) => { const { error } = userSchema.validate(req.body); if (error) { return res.status(400).json({ error: error.details[0].message }); } // Processar la petició si les dades són vàlides res.status(201).json({ message: 'User created successfully' }); }); module.exports = router;
Resum
En aquesta secció, hem après la importància de les proves en el desenvolupament d'APIs RESTful i hem vist com escriure proves unitàries i d'integració utilitzant diverses eines i frameworks. També hem après a validar les dades d'entrada i sortida per garantir la integritat de la informació. Amb aquestes habilitats, podreu assegurar-vos que la vostra API és fiable, robusta i segura.
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