表单数据验证

表单数据验证

在用node.js写登录注册接口时,用了一个很方便的表单验证。

1. 安装@hapi/joi包,这是为表单中携带的每个数据项,定义验证规则。

npm install @hapi/joi@17.1.0

2. 安装@escook/express-joi中间件,来实现自动对表单数据进行验证的功能。

npm i @escook/express-joi

3. 部分验证规则

  • string()值必须时字符串
  • alphanum()值只能是包含a-zA-Z的字符串
  • min(len)最小长度
  • max(len)最大长度
  • required()值必填项,不能为undefined
  • pattern(正则表达式)值必须符合正则表达式的规则

4. 用户信息验证规则模块

// 导入验证规则包
const joi = require('@hapi/joi')
// 用户名的验证规则
const username = joi.string().alphanum().min(3).max(12).required()
// 密码的验证规则
const password = joi
.string()
.pattern(/^[\S]{6,8}$/)
.required()
// 注册和登录表单的验证规则对象
exports.schema = {
    
    
// 表示需要对 req.body 中的数据进行验证
body: {
    
    
username,
password,
},
}

5. 修改路由对应得信息

// 1. 导入验证表单数据的中间件
const expressJoi = require('@escook/express-joi')
// 2. 导入需要的验证规则对象
const {
    
     schema } = require('../schema/user')
router.post('/register', expressJoi(schema), userHandler.register)

验证用户名成功
验证用户名
验证密码成功
验证密码

6. 捕获数据校验失败

// 导入验证规则包
const joi = require('@hapi/joi')
// 错误中间件
app.use(function (err, req, res, next) {
    
    
// 数据验证失败
if (err instanceof joi.ValidationError) return res.send(err)
// 未知错误
res.send(err)
})

例如登录失败
登录失败
以上就是表单验证的方便方法啦~

猜你喜欢

转载自blog.csdn.net/weixin_51938823/article/details/131939706