【发布时间】:2016-06-02 05:59:30
【问题描述】:
对于 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 数据?有没有更好的办法?
而且,我对客户端发送的数据类型非常谨慎,为了更进一步,我实际上正在考虑手动检查数据类型,例如?是布尔吗?是整数吗? isString 等。这听起来真的很乏味,所以任何关于 javascript 验证的见解都会非常有帮助! 谢谢!
【问题讨论】:
-
您的问题似乎与 JSON 无关,而与如何安全访问嵌套对象有关。 JSON 只是文本。希望这可以帮助您现在使用更好的搜索词并找到已经存在的问题。
-
检查 json-schema.org 他们有多种语言的验证器
标签: javascript json node.js validation express