From ff34318380400b71ffdf5cdc10a3c7d63d81b4e4 Mon Sep 17 00:00:00 2001 From: DESKTOP-71BH0QO\L、ming <172680469@qq.com> Date: 星期一, 19 四月 2021 15:36:55 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/config/SwaggerConfig.java | 78 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 78 insertions(+), 0 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/config/SwaggerConfig.java b/springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/config/SwaggerConfig.java new file mode 100644 index 0000000..8086027 --- /dev/null +++ b/springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/config/SwaggerConfig.java @@ -0,0 +1,78 @@ +package com.panzhihua.zuul.config; + +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.netflix.zuul.filters.Route; +import org.springframework.cloud.netflix.zuul.filters.RouteLocator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger.web.SwaggerResource; +import springfox.documentation.swagger.web.SwaggerResourcesProvider; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import java.util.*; + +import static java.util.stream.Collectors.collectingAndThen; +import static java.util.stream.Collectors.toCollection; + +/** + * @program: springcloud_k8s_panzhihuazhihuishequ + * @description: swagger + * @author: huang.hongfa weixin hhf9596 qq 959656820 + * @create: 2020-11-26 16:57 + **/ +@Configuration +@EnableSwagger2 +@Primary +public class SwaggerConfig implements SwaggerResourcesProvider { + + //RouteLocator可以根据zuul配置的路由列表获取服务 + private final RouteLocator routeLocator; + + private String[]ids=new String[]{"appletsbackstage","applets","communitybackstage", "shopbackstage"}; + + public SwaggerConfig(RouteLocator routeLocator) { + this.routeLocator = routeLocator; + } + /** + * Gets a result. + * + * @return a result + */ + @Override + public List<SwaggerResource> get() { + List resources = new ArrayList(); + List<Route> routes = routeLocator.getRoutes(); + routes = routes.stream().collect( + collectingAndThen( + toCollection(() -> new TreeSet<>(Comparator.comparing(Route::getId))), ArrayList::new) + ); + //通过RouteLocator获取路由配置,遍历获取所配置服务的接口文档,这样不需要手动添加,实现动态获取 + List<String>stringList= Arrays.asList(ids); + for (Route route: routes) { + String id = route.getId(); + boolean contains = stringList.contains(id); + String fullPath = route.getFullPath(); + String s = fullPath.replaceFirst("/api", ""); + String s1 = s.replaceFirst("/" + id, ""); + if (contains) { + resources.add(swaggerResource(id,s1.replace("**", "v2/api-docs"),"1.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; + } + + +} -- Gitblit v1.7.1