【发布时间】:2019-08-16 18:09:02
【问题描述】:
我正在尝试为我的 Zuul Edge 服务中的所有微服务创建一个整合的 Swagger UI。边缘服务在 Kubernetes 中运行,并使用 Spring Cloud Kubernetes 进行服务发现。
查询执行器/端点时,我看到了我所有的微服务。
但是,当使用 ZuulProperties -> getRoutes().values() 时,我只会得到一个空数组。
我需要在 application.properties 中对路由进行硬编码,还是有办法利用服务发现来动态获取所有路由?
application.properties:
spring.application.name=gateway-service
eureka.client.enabled=false
zuul.sensitiveHeaders=
zuul.ignoreSecurityHeaders=false
management.endpoints.web.exposure.include=*
server.port=8080
swaggerconfig.java:
@Autowired
ZuulProperties properties;
@Primary
@Bean
public SwaggerResourcesProvider swaggerResourcesProvider() {
return () -> {
List<SwaggerResource> resources = new ArrayList<>();
System.out.println("Zuul routes " + properties.getRoutes().values().toString());
properties.getRoutes().values().stream().forEach(route ->
resources.add(createResource(route.getId(), "2.0")));
return resources;
};
}
private SwaggerResource createResource(String location, String version) {
System.out.println("Location: " + location);
System.out.println("Version: " + version);
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(location);
swaggerResource.setLocation("/" + location + "/v2/api-docs");
swaggerResource.setSwaggerVersion(version);
return swaggerResource;
}
【问题讨论】:
标签: java kubernetes swagger-ui swagger-2.0 netflix-zuul