zuul 网关整合swagger2

springcloud版本Dalston.SR1  boot 版本:1.5.6.RELEASE

整合各个服务的文档在网关统一查看

zuul 网关整合swagger2_第1张图片

首先在网关加入相关jar

        
        
            io.springfox
            springfox-swagger2
            2.9.0
        
        
        
            io.springfox
            springfox-swagger-ui
            2.9.0
        
        
        
            com.google.guava
            guava
            25.1-jre
        

网关SwaggerConfig配置

@EnableSwagger2
@Configuration
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2);
    }

}
DocumentationConfig 自动从eureka拉取服务文档
@Component
@Primary
public class DocumentationConfig implements SwaggerResourcesProvider{

    private final RouteLocator routeLocator;

    public DocumentationConfig(RouteLocator routeLocator) {
        this.routeLocator = routeLocator;
    }

    // 自动获取系统配置的路由资源集合
    @Override
    public List get() {
        List resources = new ArrayList<>();
        List routes = routeLocator.getRoutes();
        routes.forEach(route -> {
            resources.add(swaggerResource(route.getId(),route.getFullPath().replace("**", "v2/api-docs"),"2.0"));
        });

        return resources;
    }

    // 获取对应的路由资源
    private SwaggerResource swaggerResource(String name, String location, String version) {
        SwaggerResource swaggerResource = new SwaggerResource();
        swaggerResource.setName(name);
        swaggerResource.setLocation(location);
        swaggerResource.setSwaggerVersion(version);
        return swaggerResource;
    }
}

其它微服务pom都是一样的

swaggerConfig配置不一样

@EnableSwagger2
@Configuration
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(this.apiInfo())
                .select()
                 //扫描哪个包
                .apis(RequestHandlerSelectors.basePackage("com.pwl.pcloud"))
                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("xxx接口文档")
                .description("xxx相关接口的文档")
                .version("1.0")
                .build();
    }

}

然后启动项目就可以

zuul 网关整合swagger2_第2张图片

你可能感兴趣的:(springcloud)