Я пытаюсь создать консолидированный интерфейс Swagger для всех моих микроуслуг в моей службе Zuul Edge.Edge Service работает в Kubernetes, и служба Service Discovery использует 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;
}