独立的NPM库,根据swagger文件验证请求

问题描述 投票:1回答:1

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

因此,我们需要一个NodeJS工具,它可以根据swagger规范验证请求(不仅是主体,还有params等) - 确切地说是swagger工具和其他一些工具(例如swagger-request-validator)正在做什么,而不是作为中间件。

我做了一些搜索,但找不到一个,也查看了swagger-tools源代码,估计它的验证组件是以不能单独使用的方式编写的。

任何建议都是受欢迎的。提前致谢。

node.js npm swagger
1个回答
1
投票

你可以使用swagger-model-validator

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是必填字段']

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

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

我用Swagger's sample JSON来回答这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.