oktatas:web:back-end_framework:express:ervenyesseg:joi_es
Tartalomjegyzék
Express - Érvényesség joi-val
- Szerző: Sallai András
- Copyright © 2024, Sallai András
- Szerkesztve: 2025
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
Bevezetés
Célunk a bejövő adatok ellenőrzése. A bejövő adatokat ellenőrizhetjük a kontrollerben is, vagy írhatunk rá köztes szoftvert.
Dokumentáció:
- https://joi.dev/ (2024)
Függőségek
npm install joi
vagy:
pnpm add joi
Köztes szoftver érvényesítő
Ha köztes szoftverként írjuk meg az érvényesítőt, azt elkülönítve tároljuk, így átláthatóbb kódot kapunk. Tegyük fel, hogy dolgozók adatait várjuk, és ehhez szeretnénk érvényesítőt írni:
- app/middlewares/empValidator.js
import Joi from 'joi'; const empSchema = Joi.object({ name: Joi.string().required(), city: Joi.string().min(2), salary: Joi.number().min(100).max(1000) }); const empValidator = (req, res, next) => { const { error } = empSchema.validate(req.body); if (error) { res.status(400) return res.json({ error: error.details[0].message }); } next(); }; export default empValidator;
Használat az útválasztóban
Az útválasztásnál alkalmazzuk a köztes szoftver. Ebben az esetben a post() függvény második paramétereként, tömb formájában adjuk meg.
- app/routes/api.js
import { Router } from 'express'; import EmployeeController from '../controllers/employeeController.js'; import empValidator from '../middlewares/empValidator.js'; const router = Router(); router.get('/employees', EmployeeController.index); router.post('/employees', [empValidator], EmployeeController.store); export default router;
Regisztráció érvényessége
- app/middlewares/authValidator.js
import Joi from 'joi'; const registerValidator = (req, res, next) => { const schema = Joi.object({ user: Joi.string().min(3).required(), email: Joi.string().email().required(), pass: Joi.string().min(5).required(), pass_confirm: Joi.string().min(5).required().valid(Joi.ref('pass')) }); const { error } = schema.validate(req.body); if (error) { res.status(422); return res.json({ errors: error.message }); } next(); }; export { registerValidator };
A routingban:
router.post('/register', [registerValidator], AuthController.register);
oktatas/web/back-end_framework/express/ervenyesseg/joi_es.txt · Utolsó módosítás: 2025/07/28 21:23 szerkesztette: admin