我正在使用自己的API构建第三方软件的增强功能。我有第三方的静态.yml文件用于swagger,但对于我自己的端点,我使用springdoc注解和OpenAPI bean声明来生成文档。我可以在同一个swagger文档中显示这两个文件吗?
动态生成单据:
@Configuration
public class SwaggerConfiguration {
@Bean
public GroupedOpenApi myOpenApi() {
String group = "My Group API";
String paths[] = { "/**" };
GroupedOpenApi api = GroupedOpenApi.builder()
.group(group)
.pathsToMatch(paths)
.packagesToScan("org.mypackage")
.addOpenApiCustomiser(openApi -> {
openApi.setInfo(
new Info()
.title(group)
.description("[Base URL: /myapi ]")
);
}).build();
return api;
}
}
应用程序.yml中的静态.yml设置:
springdoc:
swagger-ui:
urls:
- name: My Group 1
display-name: My Group 1
url: group1.yml
- name: My Group 2
display-name: My Group 2
url: group2.yml
所以在默认情况下,springdoc会以swagger的形式显示我动态生成的API,但是一旦我添加了静态设置,静态文件驱动的swagger组就会显示出来,而动态的swagger组就不会显示出来了。有可能同时显示这两个组吗?
1条答案
按热度按时间ruarlubt1#
我想到了一个解决办法,但可能是黑客。请让我知道是否有合适的方法来做到这一点...
即使我添加了静态设置,动态生成的openapi java bean仍然在执行,所以当加载swagger页面时,尽管springdoc没有显示动态URL,但是动态URL仍然存在。
因此,要使用springdoc显示静态和动态的swagger内容:
1.只使用动态生成的swagger运行您的spring-boot应用程序(在application.yml中没有静态设置或将其注解掉)
1.在它生成的swagger页面中,应该有一个指向openapi生成的文件的url链接(在本例中为http://localhost:8080/v3/api-docs/My%20Group%20API),点击它,它将打开一个新的标签页。
1.将静态设置添加到应用程序.yml文件中,并添加另一个包含该url的集合条目:
启动spring-boot应用程序,下拉列表中将显示静态文件swagger组和动态组