Swagger Gateway MicroService聚合

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

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

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

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

我在我的pom.xml添加了这个

  ....  io.springfox springfox-swagger-ui 2.6.1   io.springfox springfox-swagger2   

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

  @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); } } 

我为swagger文档创建了聚合器

 @Component @Primary @EnableAutoConfiguration public class SwaggerAggregatorController implements SwaggerResourcesProvider { @Override public List get() { List 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; } } 

我可以在这个领域添加更多的微服务。 (可以改进从配置文件中读取)

我的application.properties如下所示

 ... server.port=8001 zuul.routes.cust.path=/cust/** zuul.routes.cust.url=http://1.1.1.2:8002/cust-service/ ...