节点JS POST | PUT身体验证

Ste*_*yer 3 javascript validation node.js express

生产级环境中,什么或多或少是POST/PUT身体验证的标准?

我的方法一直是这样的:

const isValid = (req.body.foo && /[a-z0-9]*/i.test(req.body.foo))
Run Code Online (Sandbox Code Playgroud)

仅检查变量是否存在且不包含意外字符.

rsp*_*rsp 8

您使用Express标记了您的问题,因此我将专注于Express中的请求正文验证.对于Express,有两个用于验证的模块最受欢迎:

两者都稳定且广泛使用.您可以根据自己喜欢的验证语法使用其中任何一种.第一个是内部使用validator.第二个是内部使用joi.

看到:

express-validator路由处理程序内部的使用示例:

req.checkBody('postparam', 'Invalid postparam').notEmpty().isInt();
req.checkParams('urlparam', 'Invalid urlparam').isAlpha();
req.checkQuery('getparam', 'Invalid getparam').isInt();
Run Code Online (Sandbox Code Playgroud)

express-validation用作中间件的示例

validate({body: {
  email: Joi.string().email().required(),
  password: Joi.string().regex(/[a-zA-Z0-9]{3,30}/).required()
}})
Run Code Online (Sandbox Code Playgroud)

这将返回一个中间件.该对象通常作为模块导出并存储在不同的文件中.

  • @UtkarshDubey 我添加了代码示例。查看更新的答案。 (2认同)