标签: express-openapi-validator

如何使用 Swagger 3 将自定义中间件添加到express-openapi-validator

我有一个使用express-openapi-validator的Node应用程序,它接受一个api规范文件(这是一个.yml文件),并进行请求和响应验证。express-openapi-validator 包将请求路由到处理程序文件(在规范中定义)。其中一个处理程序可能如下所示:

function getUsers(req, res) {
  const { 'x-user-id': userId } = req.headers
  res.status(200).json(`Your userId is ${userId}`)
}
Run Code Online (Sandbox Code Playgroud)

我有一个 API 密钥功能,用户可以在其中获取新的 API 密钥,而其他端点则需要调用者在请求标头中包含 API 密钥来验证请求。

我知道应该可以使用中间件来验证请求,但我不知道如何在选定端点上将自定义中间件与 express-openapi-validator 包一起使用。

例如:

GET /apikey = 不需要 api 密钥 GET /resource = 需要 api 密钥

我该如何配置这个?

我的 app.js 中的 openapi 验证器代码如下所示:

new OpenApiValidator({
  apiSpec,
  validateResponses: true,
  operationHandlers: path.join(__dirname, './handlers'),
})
  .install(app)
  .then(() => {
    app.use((err, _, res) => {
      res.status(err.status || 500).json({
        message: err.message,
        errors: err.errors,
      });
    });
  });
Run Code Online (Sandbox Code Playgroud)

node.js swagger-3.0 express-openapi-validator

3
推荐指数
1
解决办法
8501
查看次数