对于NodeJS,Express 4, 有时我写一个路由,客户端会发送这种JSON数据进行处理,
{
"data" : "xx"
"nested" : {
field1: "111",
field2: "222"
}
}
然后在服务器端,我经常发现自己做了很多手动验证,比如
if (!validVariable(req.body.data)) //error
if (!validVariable(req.body.nested)) //error
if (validVariable(req.body.nested)) {
if (!validVariable(req.body.nested.field1) // error
if (!validVariable(req.body.nested.field2) // error
}
.....
function validVariable(input) {
return (typeof input !== 'undefined') && input;
}
在安全地访问post请求内容之前总是测试结构是非常繁琐的,如果我继续使用req.body.nested.field1由于req.body.nested的空指针异常,我可能会崩溃服务器。
我认为表单内容的服务器验证是否繁琐?人们通常做什么? 我查看了node-validator,express-validator,看起来真的很有用但是手动测试json数据?还有更好的方法吗?
而且,我对客户端发送的数据类型非常警惕,为了更进一步,我实际上是在考虑手动检查数据类型吗? isBoolen? isInt? isString等。听起来真的很乏味,所以任何有关javascript验证的见解都会非常有用! 谢谢!
答案 0 :(得分:1)
为此,我一直在使用Ajv库。它对我来说效果很好。只需在下面
1)定义您期望的请求架构。您必须在架构定义中指定必需的字段和数据类型。
2)导入并安装库,使用
验证请求 var valid = ajv.validate(schema,request);
检查valid
验证状态,并ajv.errors
查看有关请求错误的详细信息。
有关详细信息,请参阅https://github.com/epoberezkin/ajv
答案 1 :(得分:0)
查看https://github.com/hapijs/joi
首先定义一个模式,然后验证你的json。