java - 在 SpringBoot 中使用 swagger.yaml 的 Swagger UI
问题描述
我们有一个带有 springfox-swagger2 和 springfox-swagger-ui(2.9.2 版)的 SpringBoot(1.5.12 版)REST Api
@EnableSwagger2
public class Application extends SpringBootServletInitializer {
@Bean
public Docket swagger() {
return new Docket(SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
我可以在http://localhost:8080/swagger-ui.html看到 Swagger UI
如何配置 swagger-ui 来读取我的 swagger.yaml/json 配置文件而不是自动生成它?我尝试了几种配置都没有成功。
解决方案
您需要创建一个可以提供SwaggerResourcesProvider
@Primary
bean 的类,它指定配置的位置,如下所示(考虑到swagger.json
文件存在于 中src/main/resources
)
@Configuration
public class SwaggerSpecConfig {
@Primary
@Bean
public SwaggerResourcesProvider swaggerResourcesProvider(InMemorySwaggerResourcesProvider defaultResourcesProvider) {
return () -> {
SwaggerResource wsResource = new SwaggerResource();
wsResource.setName("new spec");
wsResource.setSwaggerVersion("2.0");
wsResource.setLocation("/swagger.json");
List<SwaggerResource> resources = new ArrayList<>(defaultResourcesProvider.get());
resources.add(wsResource);
return resources;
};
}
}
然后在 Swagger UI 上,您将能够从您的 json(命名为new spec
此处)中选择规范,如下所示:
这是 Springfox 文档的链接: http ://springfox.github.io/springfox/docs/current/#aggregating-multiple-swagger-specifications-in-the-same-swagger-ui
推荐阅读
- python - 如何在 python 脚本中设置我的台面驱动程序?
- javascript - 在 Ajax 响应中,我的 if 条件不起作用
- php - 排序和获取最大值codeigniter
- android - android在活动/片段之间共享一个复杂的对象?
- flutter - Flutter 中 cron 插件和 Timer.periodic 的区别
- python-3.x - 在 Ubuntu docker 上运行 Kivy hello world - egl_rpi - ImportError: cannot import name 'bcm'
- php - WooCommerce:获取最新产品并(部分)随机排序
- reactjs - 如果数据为空,FetchAPI GraphQL / Gatsby 在前端抛出错误
- c# - 如何减少我的 void update() 更新次数?
- javascript - 需要在页面加载时保持切换处于活动状态,并在页面加载时将其隐藏