gpt4 book ai didi

node.js - 独立的NPM库,根据swagger文件验证请求

转载 作者:太空宇宙 更新时间:2023-11-03 23:16:16 25 4
gpt4 key购买 nike

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

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

我查了一下没找到,又查了下swagger-tools的源码,估计它的验证组件写的不太方便单独使用。

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

最佳答案

您可以使用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 is a required field' ]

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

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

我用过Swagger's sample JSON对于这个答案。

关于node.js - 独立的NPM库,根据swagger文件验证请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55114609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com