是否有一个 Node 模块,用于根据该请求的 Swagger YAML 架构定义来验证 Express req 对象中提供的架构/值?
假设这是 YAML 的相关部分:
/books/{genre}:
get:
parameters:
- name: genre
in: path
required: true
type: string
- name: size
in: query
required: false
type: number
从以下请求派生的 req 对象应通过验证:
GET /books/sci-fi
GET /books/thriller?size=5
这个应该会失败:
GET /books/12
最佳答案
要使用 yaml 文件生成模板 Node.js 服务器,请尝试 swagger.io > Swagger 编辑器 > 在线编辑器 > 在左侧 Pane 中构建 yaml > 生成服务器 > Node.js
可下载的包将使用 swagger-tools 进行验证。生成的代码中的默认index.js将定义您的 Controller (处理每个请求的自定义代码)将位于controllers目录中:
// swaggerRouter configuration
var options = {
swaggerUi: '/swagger.json',
controllers: './controllers',
useStubs: process.env.NODE_ENV === 'development' ? true : false // Conditionally turn on stubs (mock mode)
};
将这些元素添加到端点定义中以定义 Controller 名称和方法名称:
您可以将此属性添加到端点定义中,以告诉 swagger-tools 中间件哪个 javascript 文件将处理请求:
x-swagger-router-controller: myController
operationId: myMethod
创建一个包含导出 myMethod 的 myController.js 的 Controller 目录:
module.exports.myMethod = myMethod;
function myMethod(req, res) {
//do stuff
res.end();
}
在将请求路由到您的 Controller 之前,将验证输入。
关于node.js - 基于 Swagger YAML 验证 Express 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42025088/