ZuulProperties не возвращает маршрутов

#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, проверьте это