Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:back-end_framework:express:ervenyesseg:joi_es

< Érvényesség ES

Express - Érvényesség joi-val

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ó:

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