节点JS POST | PUT身体验证

时间:2017-03-28 16:14:23

标签: javascript node.js validation express

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

我的方法总是如下:

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

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

2 个答案:

答案 0 :(得分: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();

express-validation作为中间件使用的示例

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

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

答案 1 :(得分:0)

在生产级别环境中,将验证步骤视为中间件(使用 Express )很常见,并且在一般情况下,人们使用验证库或自定义模块来匹配模式或检查对象,所以它通常如下所示:

import myValidation from '../helpers/validation';
const validateUserBody = (req, res, next) =>  {
  return myValidation(req.body)
           ? next()
           : res.status(400).json({message: "Bad body"})
}