Express Req.Body验证

arb*_*arb 12 validation middleware node.js express

我想创建一个快速中间件看起来像这样:

function validate (options) {
  var defaultOptions = {...}
  , validations = _.extend(defaultOptions, options);
  return validate (req, res, next) {
      /* Use some sort of validation framework where I can pass `validations` into*/



      next(someErrors || null)
  }    
}
Run Code Online (Sandbox Code Playgroud)

我已经看过node-validator和中间件选项以及tracery,但是它们看起来都不像你可以将"规则集"传递给它们并让它们针对提供的输入运行规则.

有没有人对如何使用这些模块或我还没有找到的另一个模块有任何建议?我是否必须自己动手才能做到这一点?

UPDATE

这确实是为了验证表格帖子.我知道不会有一个中间件会覆盖整个网站的所有帖子; 这将仅用于某些路线.我想要可重用的中间件,因为我们正在制作具有通用路由的API,并期望我们希望以类似的方式验证常见的表单体,并且可以选择在每个API的基础上进行调整.

Myr*_*tol 5

使用 JSON 模式

在不了解您想要检查的具体内容的情况下,我认为基于JSON 模式的工具可以很好地为您服务。JSON模式指定了多种验证规则

节点模块示例:

我根据在 Nipster 上对“json schema”的简单搜索制作了这个列表。我发现 Nipster 是一个很好的工具,可以快速概述特定任务的优秀模块,因为它还包括项目的分叉数量和 github 明星数量,作为受欢迎程度的衡量标准,这反过来又经常说明模块的质量和成熟度。当然不是盲目地采取,而是作为进一步研究的开始。

我预计实际上并非所有 JSON 模式模块都支持所有验证规则,因此我认为您应该首先清点您实际需要(或希望将来可用)的规则类型,然后根据情况缩小选择范围关于这一点。

有一个针对 JSON 模式工具的官方测试套件。您可能想要寻找宣传与该套件兼容的模块。

不使用 JSON 模式