请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

gateway问题

大目老师,我现在遇到一个问题
这是我的网关配置
ateway:
discovery:
locator:
# 让gateway通过服务发现组件找到其他的微服务
enabled: true
routes:
- id: user_route
uri: lb://user-center
predicates:
- Path=/users/**

然后user-center controller的@RequestMapping("/api/service/user")是这样定义的,然后方法是test
然后通过 http://localhost:8040/users/api/service/user/test 访问是404
但是通过http://localhost:8040/user-center/api/service/user/test 是可以访问的,
http://localhost:8040/users/api/service/user/test 404 是什么原因造成的

正在回答

1回答

您好,这个问题在路由谓词工厂一节有讲。课程配套手记

https://www.imooc.com/article/290804

路由配置的两种形式 一段也有写到。

按照您的配置

Path=/users/**

指的是:访问Gateway的/users/** 会转发到user-center微服务的/users/** 

但你这个微服务根本没有这样的API,所以会404。


而,之所以用user-center/api/xxxx可以访问,是因为Gateway的

xxxx.locator.enabled=true

提供的。这个配置提供了基于约定的转发规则:访问Gateway的/服务名称/** 会转发到指定服务的/**


0 回复 有任何疑惑可以回复我~
  • 提问者 慕虎146535 #1
    像我这种配置方式网关是做不到访问的是吗?还是说需要怎么改?
    回复 有任何疑惑可以回复我~ 2019-11-02 15:12:27
  • 大目 回复 提问者 慕虎146535 #2
    像你这种方式,需要额外加配一个url重写的过滤器工厂。
    回复 有任何疑惑可以回复我~ 2019-11-02 15:14:56
  • 提问者 慕虎146535 回复 大目 #3
    把uri: lb://user-center 改成http://localhost:8083 是这样吗
    回复 有任何疑惑可以回复我~ 2019-11-02 15:20:01
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信