当前位置: 首页 > 知识库问答 >
问题:

基于swagger文件验证请求的独立NPM库

楮景明
2023-03-14

我们正在使用Swagger、AWS API网关和Lambda函数与NodeJS构建API。API网关将进行请求验证,但是根据设计,lambda函数需要将请求对象重新验证为API网关代理请求事件。这是有意义的,因为理论上我们可以通过其他事件源(例如SNS)调用lambda函数来重用它们。

因此,我们需要一个NodeJS工具,它可以根据swagger规范验证请求(不仅是正文,还有参数等)-正是swagger-tools和其他一些工具(例如swagger-estest-validator)正在做的事情,但不是作为中间件。

我做了一些搜索,但找不到一个,还研究了swagger工具的源代码,估计它的验证组件是以不容易单独使用的方式编写的。

欢迎任何建议。提前致谢。

共有1个答案

牛智志
2023-03-14

您可以使用摇摆模型验证器。

var Validator = require('swagger-model-validator');
var swaggerFile = require("./swagger.json");

const validator = new Validator(swaggerFile);

console.log(validator.validate({
    name: 'meg'
}, swaggerFile.definitions.Pet, swaggerFile.definitions, true).GetErrorMessages())

这将输出:

['photoUrls是必填字段']

< code>validator.validate返回一个对象,因此您还可以检查返回的对象是否包含< code>errors属性下的任何内容。它应该简单到

if (validator.validate({
    name: 'meg'
}, swaggerFile.definitions.Pet, swaggerFile.definitions, true).errors) {
    // do something with error
}

我使用斯瓦格的示例 JSON 来回答这个问题。

 类似资料:
  • 创建验证 任何时候,都可以直接使用think\Validate类而不需要定义验证器类进行独立的验证操作,例如: $validate = Validate::make([ 'name' => 'require|max:25', 'email' => 'email' ]); $data = [ 'name' => 'thinkphp', 'email' => 't

  • 我需要在爪哇中使用摇摆不定(YAML文件)来验证传入的REST请求。所以任何人都可以帮我这个。提前致谢。

  • 我的问题是,在获取swagger文件之前,如何将授权头添加到索引hmtl中。我从一个使用基本身份验证的http url获取了这个招摇过市的文件。所以我需要在调用服务之前提供用户和密码。所以现在我需要知道在哪里添加标题。

  • 我们希望将我们的swagger规范拆分为两个文件。一个包含endpoint,一个包含类型定义,因为类型定义用于多个项目,我们希望避免在多个源位置修复某些内容。 我们使用maven codegen插件来生成模型和api,它可以很好地进行拆分。 但是,请求验证不会,因为它无法遵循对它所显示的类型定义的外部引用。 我们使用swagger-request-validator-spring MVC进行请求验

  • 对不起,如果这个问题似乎很明显,但我是新的表达,节点,和大摇大摆。 我相信有,但很难找到,或者我没有找到正确的东西。

  • 问题内容: 我正在尝试在python中使用基本身份验证 响应表单 auth 变量: 但是,当我尝试从其他位置获取数据时-我收到401错误 据我了解-在第二个请求中不是替换的会话参数。 问题答案: 您需要使用会话对象,并向 每个请求 发送身份验证。该会话还将为您跟踪Cookie: