我有一个使用 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,
});
});
});