是否有一个节点模块用于验证Express req对象中提供的模式/值,基于该请求的Swagger YAML模式定义?
让我们说这是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
答案 0 :(得分:1)
要使用yaml文件生成模板node.js服务器,请尝试使用swagger.io> Swagger编辑器>在线编辑器>在左侧窗格中构建您的yaml>生成服务器> Node.js的
可下载包将使用swagger-tools进行验证。生成的代码中的默认index.js将定义您的控制器(处理每个请求的自定义代码)将存在于控制器目录中:
// swaggerRouter configuration
var options = {
swaggerUi: '/swagger.json',
controllers: './controllers',
useStubs: process.env.NODE_ENV === 'development' ? true : false // Conditionally turn on stubs (mock mode)
};
将这些元素添加到端点定义中以定义控制器名称和方法名称:
您可以将此属性添加到端点定义,以告诉swagger-tools中间件javascript文件将处理请求:
x-swagger-router-controller: myController
operationId: myMethod
创建一个控制器目录,其中包含导出myMethod的myController.js:
module.exports.myMethod = myMethod;
function myMethod(req, res) {
//do stuff
res.end();
}
在将请求路由到您的控制器之前,将验证输入。