6.Node.js express api参数验证

507 阅读1分钟

使用 expressValidator 库,版本为5.3.1

  1. 需要在app.js 中配置
app.use(expressValidator()) // 最新的版本,好像不支持这种写法

在 express api方法里使用 req.validate, 请求参数需要包含在 req.body, req.query中,要不验证不通过

2. 一些常用的写法,各种验证方式可以自由组合, 还有好多验证类型,比如ip, float等等

// 最大值、最小值
req.validate('id', 'id不能为空, 并且在20-200范围之内').notEmpty().isInt({ min: 20, max: 200});
// 非空验证
req.validate('name', '用户名不能为空').notEmpty();
// 长度验证
req.validate('idcard', '身份证号不正确').isLength({ min: 18, max: 18 });
// 范围验证
req.validate('state', '状态值不正确').isIn([1, 2, 3]);
// 邮件验证
req.validate('email', '邮件地址格式不正确').isEmail();
// 包含关键字验证
req.validate('address', '地址格式不正确').contains('北京');
// 日期验证.  .isBefore, .isAfter
req.validate('end_date', '结束日期不能大于2022-12-09').isBefore('2022-12-09');

// 使用下则表达式验证
req.validate('phone', '手机号格式不下确').matches(/^1\d{10}$/)

const errors = req.validationErrors();
if (errors) {
    res.error(errors);
    return;
}

image.png

测试

http://localhost:8082/test?id=22&name=222&idcard=2100024942323&state=3&email=xy@bb.com&phone=13912341234&address=北京市&end_date=2022-12-08&ids=[%221%22,%222%22,%223%22]

可以改变参数值, 尝试几次