Express.js 中的 POST 数据 JSON 验证

Posted

技术标签:

【中文标题】Express.js 中的 POST 数据 JSON 验证【英文标题】:POST Data JSON Validation in Express.js 【发布时间】:2012-11-19 23:46:00 【问题描述】:

我正在使用 Node.js 和 Express.js 编写应用程序。该应用程序有一个(小)REST API,然后是一个 Web 前端。我使用 MongoDb。

对于 API,我倾向于将 POST 数据发送到某个端点,然后进行处理或其他操作,并将其转储到数据库中。但是,我有一些我想强制执行的数据库模式。在我的 POST 数据上强制执行特定结构的选项/最佳做法是什么,以便我知道某些字段存在且属于特定类型。

如果这可以在中间件级别完成就好了,但这不是必须的。人们通常为验证/架构执行做什么?

【问题讨论】:

【参考方案1】:

node-validator 是您正在寻找的。您可以像这样将其用作独立模块

var check = require('validator').check;

//Validate
check('test@email.com').len(6, 64).isEmail();        //Methods are chainable
check('abc').isInt();                                //Throws 'Invalid integer'

或者您可以使用构建在节点验证器之上的express-validator 作为中间件。

【讨论】:

node-validator 和 express-validator 都是不错的选择...但是,当前版本的 express-validator 缺乏清理嵌套数据的能力...跨度> JSON 验证也不做。【参考方案2】:

这里是各种 JSON 模式验证器的最新 benchmark。

此外,对于最佳实践,您可能需要查看 JSON-schema,它尝试制定定义 JSON 对象应如何定义的标准方法。

【讨论】:

以上是关于Express.js 中的 POST 数据 JSON 验证的主要内容,如果未能解决你的问题,请参考以下文章

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

在 Express.js 上使用 Axios 向 Spotify API 发出 POST 请求时出现错误 400

Express.js 项目中在哪里进行验证——在数据库层进行验证(re. Mongoose)?

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

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

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