在 SpringBoot 中使用 swagger.yaml 的 Swagger UI

Fab*_*bry 7 java swagger spring-boot

我们有一个带有 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();
    }
Run Code Online (Sandbox Code Playgroud)

我可以在http://localhost:8080/swagger-ui.html看到 Swagger UI

如何配置 swagger-ui 来读取我的 swagger.yaml/json 配置文件而不是自动生成它?我尝试了几种配置都没有成功。

Mad*_*hat 16

您需要创建一个可以提供SwaggerResourcesProvider @Primarybean的类,该类指定如下配置的位置(考虑到该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;
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在 Swagger UI 上,您将能够从您的 json(命名为new spec此处)中选择规范,如下所示:

在此处输入图片说明

这是 Springfox 文档的链接:http ://springfox.github.io/springfox/docs/current/#aggregating-multiple-swagger-specifications-in-the-same-swagger-ui

  • swagger.json 应该位于 src/main/resources/static 中 (4认同)