Open yangbeibei69 opened 1 year ago
从你贴的图来看,我觉得不太可能呢
knife4j-gateway取子服务的路由上取的gateway中的predicates中的path,不会取LB的
如果是取了服务名称,说明你的网关配置中开启了以服务名称进行转发的配置,Knife4j-gateway组件读取DiscoveryClientRouteDefinitionLocator中拿到了服务名称的路由,然后自动聚合了
从你贴的图来看,我觉得不太可能呢
knife4j-gateway取子服务的路由上取的gateway中的predicates中的path,不会取LB的
如果是取了服务名称,说明你的网关配置中开启了以服务名称进行转发的配置,Knife4j-gateway组件读取DiscoveryClientRouteDefinitionLocator中拿到了服务名称的路由,然后自动聚合了
我把gateway配置去掉后,直接无法获取url了
我在研究我项目问题时顺道发现了此问题的原因。
与 我提的issue 类似, 此处也是由于knife4j对于多种配置写法的支持不全面导致的识别错误。
提问者的 配置中 uri 格式为 lb:http://xx-service
而不是 lb://xx-service
此处问题为 DiscoverClientRouteServiceConvert.process()
中过滤方法错误的将需要解析的内容排除了 ServiceUtils.startLoadBalance(routeDefinition.getUri()))
中对于 lb 的判断是 path.startsWith("lb://")
作者可能需要在这里添加正则匹配以满足以下多种格式.
lb://a-service
lb:http://b-service
lb:ws://c-service
Describe the bug gateway+nacos+Knife4j,v2/api-docs请求的地址有误,下图是进入gateway文档后,请求子服务地址时404
实际子服务地址应该是/sys/v2/api-docs?group=default
Expected behavior A clear and concise description of what you expected to happen.
Screenshots If applicable, add screenshots to help explain your problem. gateway路由规则如下图
Knife4j Version (please complete the following information): gateway:knife4j-gateway-spring-boot-starter:4.3.0 sys子服务:knife4j-openapi2-spring-boot-starter:4.3.0 Additional context Add any other context about the problem here.