【发布时间】:2021-01-23 14:56:46
【问题描述】:
我正在开发一个休息应用程序。
某些端点需要自定义标头参数,与授权无关。我使用 jax-rs NameBinding 创建了一个自定义注释。这是一个使用示例:
@GET
@RequiresBankHeader
public int get(
@HeaderParam("bank")
@Parameter(ref = "#/components/parameters/banks")
String bank) {
return someService.getSomeInformation();
}
有一个提供者拦截这个调用并使用头参数中的信息执行一些例程。
问题是我必须在各处重复 '@HeaderParam("bank") @Parameter(ref = "#/components/parameters/banks") String bank',即使它出现在 Swagger 中,即使服务类不需要它。我至少能够使用 ref = "#/components/parameters/banks" 重用参数定义,并在 OpenAPI.yml 文件中声明它,Quarkus 与生成的代码很好地合并。
但我还想创建和拦截器,以便在存在 RequiresBankHeader 注释时动态添加 OpenApi 定义。
有办法吗?
【问题讨论】:
-
MP OpenAPI 规范提供了一种将元数据贡献给
openapi.yml文件的编程方式。不确定是否可以按照您想要的方式进行操作,但我可能会从那里开始:github.com/eclipse/microprofile-open-api/blob/master/spec/src/… -
@RobertoCortez 谢谢。该链接引导我找到解决方案。
标签: swagger openapi quarkus microprofile smallrye