express.js - 最好的 POST json 模式验证器 [关闭]

Posted

技术标签:

【中文标题】express.js - 最好的 POST json 模式验证器 [关闭]【英文标题】:express.js - best POST json schema validator [closed] 【发布时间】:2013-10-07 16:11:36 【问题描述】:

我正在寻找一个模块来验证我的 Express.js 应用程序中的 POST json 请求。

您在 node.js 应用程序中使用什么 json 架构模块?

我认为 node-validator (https://github.com/chriso/node-validator) 在这里不是一个选项,因为它只适用于字符串。

【问题讨论】:

我建议你查看这个库:npmjs.com/package/great-json-validator。如果你担心的话,它非常容易实现,而且重量很轻:) 【参考方案1】:

嗨,我最近写了express-jsonschema。与其他验证器的主要区别是:

    您使用标准json schemas 进行验证。如果你有 编写您可能使用过的其他服务器端语言 前。 它不控制您的应用程序如何响应无效 数据。它确实让你有机会参与进来并做出回应 你要。以我的经验,这是一件好事 控制。

express-schema-validator、express-validate 和 Paperwork 都很棒。它们每个都有自己独特的语法来声明架构,并且还控制您的应用如何响应无效数据(即状态代码和数据结构)。

祝你好运!

【讨论】:

投票支持解决方案设计背后的理性:(1) 使用 json-schema,一种专用的模式语言,有助于标准化我们设计 API 的方式,以及 (2) 避免从应用程序中劫持控制权(关注点分离)。 这里也一样。支持反转控制:D。 IMO 这是最好的解决方案。【参考方案2】:

我做了这个 - 如果你仍然感兴趣:https://npmjs.org/package/isvalid

【讨论】:

试试 indicative.adonisjs.com ,有人类友好的 api 来验证架构【参考方案3】:

我制作了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 错误并提供有关问题的信息。查看文档以执行更高级的用法。

【讨论】:

谢谢,看起来很不错!【参考方案4】:

对于选择 JSON Schema 验证规则的人来说,有很多选择。好的库比较在这里:https://github.com/ebdrup/json-schema-benchmark

【讨论】:

以上是关于express.js - 最好的 POST json 模式验证器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Express.js 从请求中获取 POST 正文

Express js:如何使用 POST 请求下载文件

express.js app.post 中间件未触发

从 POST 访问中隐藏 Node.js&Express 中的错误消息

如何记录 express.js POST 参数 [重复]

使用颤振客户端向 node.js express api 发出 post 请求