瀏覽代碼

gateway提供统一的swagger接口查询

gaodm 6 年之前
父節點
當前提交
d969bdf206

+ 9 - 0
gateway-service/pom.xml

@@ -42,6 +42,15 @@
             <artifactId>logstash-logback-encoder</artifactId>
         </dependency>
 
+        <!--swagger-->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+        </dependency>
     </dependencies>
 
     <dependencyManagement>

+ 0 - 2
gateway-service/src/main/java/com/diagbot/GatewayServiceApplication.java

@@ -1,11 +1,9 @@
 package com.diagbot;
 
-import com.diagbot.config.IPFilter;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
 import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
-import org.springframework.context.annotation.Bean;
 
 /**
  * @Description: 网关启动文件

+ 43 - 0
gateway-service/src/main/java/com/diagbot/config/swagger/GatewaySwaggerResourcesProvider.java

@@ -0,0 +1,43 @@
+package com.diagbot.config.swagger;
+
+import org.springframework.cloud.netflix.zuul.filters.Route;
+import org.springframework.cloud.netflix.zuul.filters.RouteLocator;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Component;
+import springfox.documentation.swagger.web.SwaggerResource;
+import springfox.documentation.swagger.web.SwaggerResourcesProvider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: 集中管理swagger
+ * @author: gaodm
+ * @time: 2018/8/22 16:44
+ */
+@Component
+@Primary
+public class GatewaySwaggerResourcesProvider implements SwaggerResourcesProvider {
+    private final RouteLocator routeLocator;
+
+    public GatewaySwaggerResourcesProvider(RouteLocator routeLocator) {
+        this.routeLocator = routeLocator;
+    }
+
+    @Override
+    public List<SwaggerResource> get() {
+        List<SwaggerResource> resources = new ArrayList<>();
+        List<Route> routes = routeLocator.getRoutes();
+        for (Route route:routes) {
+            resources.add(swaggerResource(route.getId(), route.getFullPath().replace("**", "v2/api-docs")));
+        }
+        return resources;
+    }
+    private SwaggerResource swaggerResource(String name, String location) {
+        SwaggerResource swaggerResource = new SwaggerResource();
+        swaggerResource.setName(name);
+        swaggerResource.setLocation(location);
+        swaggerResource.setSwaggerVersion("2.0");
+        return swaggerResource;
+    }
+}

+ 34 - 0
gateway-service/src/main/java/com/diagbot/config/swagger/SwaggerConfig.java

@@ -0,0 +1,34 @@
+package com.diagbot.config.swagger;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+/**
+ * @Description: 集中管理swagger
+ * @author: gaodm
+ * @time: 2018/8/21 16:25
+ */
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+    @Bean
+    public Docket createRestApi() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(apiInfo());
+    }
+
+    private ApiInfo apiInfo() {
+        return new ApiInfoBuilder()
+                .title(" diagbot api ")
+                .description("diagbot 微服务")
+                .termsOfServiceUrl("")
+                .contact("diagbot")
+                .version("1.0")
+                .build();
+    }
+}

+ 1 - 1
gateway-service/src/main/java/com/diagbot/config/IPFilter.java

@@ -1,4 +1,4 @@
-package com.diagbot.config;
+package com.diagbot.filter;
 
 import com.netflix.zuul.ZuulFilter;
 import com.netflix.zuul.context.RequestContext;