当前位置: 代码迷 >> 综合 >> zuul 网关整合swagger2
  详细解决方案

zuul 网关整合swagger2

热度:60   发布时间:2023-12-12 01:57:25.0

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

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

首先在网关加入相关jar

        <!--swagger2--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.0</version></dependency><!--swagger2-ui--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.0</version></dependency><!--解决启动报错缺少jar包--><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>25.1-jre</version></dependency>

网关SwaggerConfig配置

@EnableSwagger2
@Configuration
public class SwaggerConfig {@Beanpublic 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;}// 自动获取系统配置的路由资源集合@Overridepublic List<SwaggerResource> get() {List<SwaggerResource> resources = new ArrayList<>();List<Route> 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 {@Beanpublic 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();}}

然后启动项目就可以