[[oktatas:web:back-end_framework:express:ervenyesseg|< Érvényesség]] ====== Express - Érvényesség joi-val ====== * **Szerző:** Sallai András * Copyright (c) 2024, Sallai András * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|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 ===== Validator ===== 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 ===== 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 ===== 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);