ZuulProperties不返回任何路线

问题描述 投票:0回答:1

在我尝试为我的Zuul Edge服务中的所有微服务创建一个整合的Swagger UI。 Edge Service在Kubernetes中运行,并使用Spring Cloud Kubernetes进行Service Discovery。

查询执行器/端点时,我看到了所有的微服务。

但是,当使用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

swagger config.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
1个回答
0
投票

ZuulProperties将从application.properties获取您的路由,您应该具有以下内容:

zuul.routes.<some_service>.path = /<your_path>/**
zuul.routes.<some_service>.serviceId = <your_service_id>
...

但这不会回答你的问题,你需要的是微服务swagger ui文档,检查this

© www.soinside.com 2019 - 2024. All rights reserved.