目录
使用 Zuul 聚合多个微服务的 Swagger 文档
不想每次都去访问独立服务的文档可以通过网关统一整合这些服务的文档,这里使用 Zuul 中进行聚合操作。
在网关服务中加入 Swagger 的依赖,代码如下所示:
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
自定义配置进行整合,直接去读取 Eureka 中的服务信息,代码如下所示:
@EnableOpenApi
@Component
@Primary
public class DocumentationConfig implements SwaggerResourcesProvider {
@Autowired
private DiscoveryClient discoveryClient;
@Value("${spring.application.name}")
private String applicationName;
@Override
public List<SwaggerResource> get() {
List<SwaggerResource> resources = new ArrayList<>();
// 排除自身, 将其他的服务添加进去
discoveryClient.getServices().stream().filter(s -> !s.equals(applicationName)).forEach(name -> {
resources.add(swaggerResource(name, "/" + name + "/v3/api-docs", "3.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;
}
}