请稍等 ...
×

采纳答案成功!

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

老师,为什么我这个不走路由谓词工厂

图片描述
图片描述
这个去掉才走谓词工厂,但这样就找不到服务的路径了

正在回答 回答被采纳积分+3

3回答

平_常_心 2020-05-31 10:33:09

我今天也遇到了谓词不生效的问题,结果发现是路径问题

可以检查一下访问路径

(X 错误的路径) http://localhost:8040/user-center/users/1

(√ 正确的路径) http://localhost:8040/users/1

0 回复 有任何疑惑可以回复我~
  • 大目 #1
    是的,给您点赞!
     http://localhost:8040/user-center/users/1
    这条路由是由locator.discovery.enabled=true控制的,不是由我们自定义的路由控制的,所以。其实视频路由谓词工厂一节,有对照手记强调过^_^
    祝您学习愉快!
    回复 有任何疑惑可以回复我~ 2020-06-01 10:03:20
慕沐4323715 2019-08-20 15:59:49

同学 你解决了吗 我这也是 谓词和过滤器都不起作用

0 回复 有任何疑惑可以回复我~
  • 大目 #1
    建议将代码共享到github,并附带上完整的复现流程,我来看看哈。
    回复 有任何疑惑可以回复我~ 2019-08-20 16:15:27
  • 提问者 无痕00 #2
    让它走自定义的routes,就会走谓词和过滤器。具体原因我也不知道
    回复 有任何疑惑可以回复我~ 2019-08-21 09:56:08
大目 2019-08-15 15:16:38

你配置表达的含义是:当且仅当你访问的是 $GATEWAY_URL/order-service/**  并且TimeBetween条件符合,才会访问到 order-service的/** 

排查思路,建议如下:

  1. 访问路径是否正确,看下上面的URL

  2. 你的谓词工厂是否被实例化了(可以在谓词工厂的方法内打个断点,如果实例化了,会有对号的标记);

  3. 更大的可能性,你的谓词工厂代码有问题。可以参考下课上的代码。https://git.imooc.com/coding-358/gateway/src/master/src/main/java/com/itmuch/gateway/TimeBetweenRoutePredicateFactory.java 。需要注意的是,类名必须以RoutePredicateFactory结尾,并且类上必须有@Component注解。

  4. yaml缩进是否正确。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信