Per convalidare le richieste in arrivo, sia Joi che Express-Validator offrono soluzioni efficienti. Vediamo come utilizzare entrambi:
1. Joi:
Joi è un potente modulo di validazione per JavaScript che ti permette di creare schemi di validazione con un semplice e intuitivo API.
Ecco un esempio di convalida di una richiesta POST con Joi:
```
const Joi = require(‘joi’);
app.post(‘/example’, (req, res, next) => { const schema = Joi.object({ username: Joi.string().alphanum().min(3).max(30).required(), password: Joi.string().pattern(new RegExp(‘^[a-zA-Z0-9]{3,30}$’)), });
const { error } = schema.validate(req.body); if (error) { return res.status(400).json({ error: error.details0.message }); } next(); }); ```In questo esempio, stiamo richiedendo che il campo “username” sia una stringa alfanumerica con una lunghezza minima di 3 e una lunghezza massima di 30. Il campo “password” deve rispettare una determinata espressione regolare. Se la richiesta non rispetta questi criteri, viene restituita una risposta con stato 400.
1. Express Validator:
Express-validator è un set di middleware di validazione ed espressione che si appoggia a `validator.js`.
Ecco un esempio di convalida utilizzando express-validator:
```
const { check, validationResult } = require(‘express-validator’);
app.post(‘/example’, [
check(‘username’).isLength({ min: 3 }).withMessage(‘must be at least 3 chars long’),
check(‘password’).isLength({ min: 5 }).withMessage(‘must be at least 5 chars long’)
], (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
In questo esempio, stiamo richiedendo che sia ‘username’ che ‘password’ siano delle stringhe di una lunghezza minima rispettivamente di 3 e 5. Se la richiesta non rispetta questi criteri, viene restituita una risposta con stato 400.