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