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

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

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

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

【问题讨论】:

标签: javascript json validation express schema


【解决方案1】:

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

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

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

祝你好运!

【讨论】:

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

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

【讨论】:

【解决方案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

【讨论】:

    猜你喜欢
    • 2012-11-19
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2011-02-15
    • 2019-10-17
    • 1970-01-01
    相关资源
    最近更新 更多