Swagger Gateway MicroService聚合

时间:2018-03-15 06:27:21

标签: java spring-boot swagger microservices

我正在使用SpringBoot开发一个微服务应用程序。 Gateway Microervice面向公众,它将请求重定向到特定的微服务(在不同的主机上运行)。

现在,我有多个微服务,每个微服务都使用Swagger公开了他们的API。我们希望为公共客户聚合所有这些API Swagger文档。

我们合并的临时解决方案是,只为Gateway Service中的每个微服务复制了Swagger Annotated类。什么是 正确的方式 呢?

1 个答案:

答案 0 :(得分:3)

我使用了Zuul,这解决了我的问题 这就是我的应用程序的部署方式 app deployment

我在<dependencies> .... <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.6.1</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> </dependency> </dependencies>

中添加了此内容
 @EnableZuulProxy
 @SpringBootApplication
 @EnableSwagger2
 public class Application {
     public static void main(String[] args) {
         SpringApplication.run(Application.class, args);
     }

    @Bean
    UiConfiguration uiConfig() {
        return new UiConfiguration("validatorUrl", "list", "alpha", "schema",
            UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS, false, true, 60000L);
    }
 }

我的主要课程看起来像这样

@Component
@Primary
@EnableAutoConfiguration
public class SwaggerAggregatorController implements SwaggerResourcesProvider {
    @Override
    public List<SwaggerResource> get() {
        List<SwaggerResource> resources= new ArrayList<>();
        SwaggerResource swaggerResource = new SwaggerResource();
        swaggerResource.setName("cust-service");
        swaggerResource.setLocation("/cust/v2/api-docs");
        swaggerResource.setSwaggerVersion("2.0");

        resources.add(swaggerResource);
        return resources;
    }
}

我为swagger文档

创建了聚合器
application.properties

我可以在此字段中添加更多微服务。 (可以改进从配置文件中读取)

我的... server.port=8001 zuul.routes.cust.path=/cust/** zuul.routes.cust.url=http://1.1.1.2:8002/cust-service/ ... 如下所示

run-as : Usage:
    run-as <package-name> [--user <uid>] <command> [<args>]