springdoc中能否同时展示自动生成与静态yml的OpenAPI UI?
如何同时展示springdoc动态生成的API文档与静态Swagger YAML分组?
可以同时展示两者。问题根源是配置springdoc.swagger-ui.urls后,springdoc会覆盖默认的动态分组展示逻辑,只显示你配置的静态分组。解决方法很简单:把动态生成的API路径手动加入到urls列表中即可。
具体实现步骤
- 保留原有的
GroupedOpenApi配置,确保动态API能正常生成(如果觉得分组名带空格会导致路径编码麻烦,可以改成无空格的名称,比如MyGroupAPI)。 - 修改
application.yml,在springdoc.swagger-ui.urls中添加动态API的条目。动态API的默认路径是/v3/api-docs/{group-name},其中{group-name}就是你在GroupedOpenApi中定义的分组名称。
示例代码与配置
优化后的动态API配置(可选,修改分组名避免编码)
@Configuration public class SwaggerConfiguration { @Bean public GroupedOpenApi myOpenApi() { String group = "MyGroupAPI"; String paths[] = { "/**" }; return GroupedOpenApi.builder() .group(group) .pathsToMatch(paths) .packagesToScan("org.mypackage") .addOpenApiCustomiser(openApi -> { openApi.setInfo( new Info() .title("My Group API") .description("[Base URL: /myapi ]") ); }).build(); } }
修改后的application.yml配置
springdoc: swagger-ui: urls: - name: My Group API display-name: My Group API url: /v3/api-docs/MyGroupAPI - name: My Group 1 display-name: My Group 1 url: group1.yml - name: My Group 2 display-name: My Group 2 url: group2.yml
如果保留原分组名(带空格)
只需把动态API的url改成编码后的路径:
springdoc: swagger-ui: urls: - name: My Group API display-name: My Group API url: /v3/api-docs/My%20Group%20API - name: My Group 1 display-name: My Group 1 url: group1.yml - name: My Group 2 display-name: My Group 2 url: group2.yml
配置完成后启动项目,Swagger UI的分组下拉列表中就会同时显示动态生成的API分组和静态YAML分组,切换即可查看对应文档。
内容的提问来源于stack exchange,提问作者wheyger
相关产品推荐
相关产品推荐

