【问题标题】:ZuulProperties return no routesZuulProperties 不返回任何路由
【发布时间】: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


    【解决方案1】:

    ZuulProperties 会从 application.properties 获取你的路由,你应该有类似的东西:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      • 2018-04-10
      • 1970-01-01
      • 2019-11-28
      • 2018-06-17
      • 2018-06-14
      • 2022-07-24
      相关资源
      最近更新 更多