Quarkus如何配置让base-path仅添加到OpenAPI的servers字段而非所有接口路径
解决方案
以下是可直接落地的配置方案,无需修改业务代码:
步骤1:保留运行时base-path配置
保留你原来在application.properties中的RESTeasy路径配置,保证应用运行时接口前缀正常生效:
quarkus.resteasy.path=/api
步骤2:配置OpenAPI路径前缀策略
新增SmallRye OpenAPI(Quarkus默认集成的OpenAPI实现)的配置,指定base-path前缀仅追加到servers字段,不拼接在每个接口路径前:
# 控制路径前缀添加到servers的url中,而非每个path前 quarkus.smallrye-openapi.path-prefix-strategy=servers # 配置多环境servers地址,使用变量引用避免base-path硬编码 quarkus.smallrye-openapi.servers."https://dev.example.com${quarkus.resteasy.path}".description=Development quarkus.smallrye-openapi.servers."https://example.com${quarkus.resteasy.path}".description=Production
方案说明
- 配置完成后重启应用,访问
/q/openapi即可获得你期望的OpenAPI规范结构:paths字段下无/api前缀,servers的url会自动带上base-path。 - 如果你的Quarkus版本低于2.8,需要先升级到2.8.x及以上版本,该配置项从2.8版本开始正式支持。
- 如果你之前通过
org.eclipse.microprofile.openapi.annotations.servers.Servers注解硬编码了服务地址,直接把base-path追加到注解的url属性中即可,和上述配置效果一致。
内容的提问来源于stack exchange,提问作者BundyQ
相关产品推荐
相关产品推荐

