前言
初学node.js的家人们,你是否还用if...else语句进行信息验证呢。吐血推荐这个joi表单数据验证模块,非常好用!!
依赖的包
1 用于编写验证规则的包:
npm i joi
2 用于验证表单数据的中间件
npm i @escook/express-joi@1.1.1
常用验证规则申明:
// * string() 值必须是字符串
// * alphanum() 值只能是包含 a-zA-Z0-9 的字符串
// * min(length) 最小长度
// * max(length) 最大长度
// * required() 值是必填项,不能为 undefined
// * pattern(正则表达式) 值必须符合正则表达式的规则
模拟验证用户名和密码的表单数据:
1 导入定义验证规则和express-joi
// 导入定义验证规则包
const joi = require('joi');
// 导入验证中间件express-joi
const expressJoi = require('@escook/express-joi');
2 定义验证规则
const username = joi.string().alphanum().min(1).max(10).required();
const password = joi.string().pattern(/^[\S]{6,15}$/).required();
// 配置验证规则
const schema = {
username,
password
}
3 将验证模块注册为局部中间件
server.post('/reguser', expressjoi(schema.reg_login_schema), (req, res) => {
res.send({
status: 0,
message: 'ok'
});
);
server.post('/login', expressjoi(schema.reg_login_schema), (req, res) => {
res.send({
status: 0,
message: 'ok'
});
注意 1 一般不会注册为全局中间件,每个api验证规则大部分情况都是不一样的 ,这里一样是特殊情况;
2 验证规则这里只列了常用的详细规则请到官网查询