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