我正在使用SpringBoot开发一个微服务应用程序。网关微服务是面向公共的,它将请求重定向到特定的微服务(在不同的主机上运行)。
现在,我有了多个微服务,每个微服务都使用Swagger公开了它们的API。我们希望为公共客户机聚合所有这些API Swagger文档。
我们已经整合的临时解决方案是,为网关服务中的每个微服务复制Swagger类。是做这件事的正确方式是什么?
发布于 2018-03-23 05:58:20
我使用Zuul,这解决了我的问题,这就是我的应用程序的部署方式。

我在我的pom.xml中添加了这个
<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);
}
}我为swagger文档创建了聚合器。
@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;
}
}我可以在这个领域增加更多的微服务。(可以改进从配置文件中读取)
我的application.properties如下所示
...
server.port=8001
zuul.routes.cust.path=/cust/**
zuul.routes.cust.url=http://1.1.1.2:8002/cust-service/
...https://stackoverflow.com/questions/49292843
复制相似问题