【发布时间】:2020-11-07 19:08:59
【问题描述】:
我有一个使用 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}`)
}
我有一个 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,
});
});
});
【问题讨论】:
-
你可以使用这个包添加中间件swagger-routes-express
标签: node.js swagger-3.0 express-openapi-validator