#java #kubernetes #swagger-ui #swagger-2.0 #netflix-zuul
#java #kubernetes #swagger-пользовательский интерфейс #swagger-2.0 #netflix-zuul
Вопрос:
Я пытаюсь создать консолидированный пользовательский интерфейс Swagger для всех моих микроуслуг в моем пограничном сервисе Zuul. Пограничная служба запущена в 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;
}
Ответ №1:
ZuulProperties предоставит вам ваши маршруты из application.properties, у вас должно быть что-то вроде:
zuul.routes.<some_service>.path = /<your_path>/**
zuul.routes.<some_service>.serviceId = <your_service_id>
...
Но это не ответит на ваш вопрос, вам нужна документация по пользовательскому интерфейсу microservices swagger, проверьте это