在我的spring-boot应用程序中启动应用程序时,我将生成多个json格式的swagger-api-doc文件,并存储在static/swaggerdoc位置。我可以通过在application.properties中提及路径来读取文件,如下面的
application.properties
springdoc.swagger-ui.urls[0].url=/swaggerdoc/openapi.json
springdoc.swagger-ui.urls[0].name=openapi
springdoc.swagger-ui.urls[1].url=/swaggerdoc/openapi1.json
springdoc.swagger-ui.urls[1].name=openapi1
springdoc.swagger-ui.urls[2].url=/swaggerdoc/openapi2.json
springdoc.swagger-ui.urls[2].name=openapi2
springdoc.swagger-ui.urls[3].url=/swaggerdoc/openapi3.json
springdoc.swagger-ui.urls[3].name=openapi3
现在,我必须在应用程序启动时动态读取springdoc.swaker-ui.url,而不是从属性文件中读取静态路径。感谢您的帮助。
我正在使用以下依赖
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.4</version>
</dependency>
谢谢你。
我可以通过在配置类中添加下面的bean定义来解决这个问题,以便使用java配置动态加载外部文档。
@Primary
@Bean
public Set<SwaggerUrl> apis(SwaggerUiConfigProperties swaggerUiConfig) {
Set<SwaggerUrl> swaggerUrlSet = new HashSet<>();
externalDocs.forEach(doc -> {
String docName = doc.get("docName");
SwaggerUrl wsResource = new SwaggerUrl(docName, "/swaggerdoc/" + docName + ".json");
swaggerUrlSet.add(wsResource);
});
swaggerUiConfig.setUrls(swaggerUrlSet);
return swaggerUrlSet;
}
您也可以使用GroupedOpenApi.builder()
@Bean
GroupedOpenApi myGroup() {
return GroupedOpenApi.builder().group("yourGroupName")
.pathsToMatch("yourPath").build();
}
这里是仅一个分组API的示例显然,您可以在生成器上循环并返回GroupedOpenApi
的集合