我正在寻找一个模块来验证我的 Express.js 应用程序中的 POST json 请求。
您在节点.js应用程序中使用什么 json 架构模块?
我假设节点验证器 (https://github.com/chriso/node-validator) 在这里不是一个选项,因为它仅适用于字符串。
我最近写了express-jsonschema。与其他验证器的主要区别是:
- 使用标准 json 架构进行验证。 如果你有编写了您可能已经使用过的其他服务器端语言以前。
- 它不控制应用程序如何响应无效数据。它确实给了你一个机会来勾搭和回应你想要。 根据我的经验,这很好控制。
架构验证器、表达式验证程序和文书工作都很棒。它们都有自己独特的语法来声明架构,还可以控制应用对无效数据(即状态代码和数据结构)的响应方式。
我做了这个 - 如果你仍然感兴趣:https://npmjs.org/package/isvalid
我做了Paperwork,这是一个非常简单的JSON验证解决方案。您可以执行以下操作:
app.post('/my/route', paperwork({
username: /[a-z0-9]+/,
password: String,
age: Number,
interests: [String],
jobs: [{
company: String,
role: String
},
}, function (req, res) {
// ...
});
它将验证:
{
username: 'brucewayne',
password: 'iambatman',
age: 36,
interests: ['Climbing', 'CQC', 'Cosplay'],
jobs: [{
company: 'Wayne Inc.',
role: 'CEO'
}]
}
或者会默默地响应 400 错误,并提供有关问题的信息。查看文档以执行更高级的用法。
对于那些选择 JSON 架构验证规则的人来说,有很多选项。这里的好库比较:https://github.com/ebdrup/json-schema-benchmark