spring cloud gateway 中碰到的坑-请求路径404问题

spring cloud 使用过程中碰到的坑,请求地址如下,请求category 项目显示菜单列表的接口,但是报404问题

*******

原因:

gateway项目中配置问题,出现问题配置如下,两个项目admins,category ,分别对应如下配置

- id: admins_router
  uri: lb://API-ADMINS
  predicates:
    - Path=/admin/hello,/admin/**
  filters:
    - StripPrefix=1


- id: category_router
  uri: lb://API-CATEGORY
  predicates:
    - Path=/admin/categories/**
  filters:
    - StripPrefix=1
    - Token=true

上述配置admins_router 的Path 属性中的/admin/** 就是问题所在,因为配置中引入filters的StripPrefix=1,所以gateway网关会对请求地址进行移除一个路径/admin,最后相当于*******,这样请求就会打到admins 项目中,刚好路径/admin/**满足,但是admins 项目时没有categories 接口的,所以会报404错误。

改进方法:

1.修改配置/admin/**为/admin/tokens/**,避免网关请求接口在其他项目中也满足,但是又没实际的接口

2.admins_router和category_router位置换下也是一种方式,不建议。

总结:这个404问题花了一个晚上也没找到,还是有点粗心大意,加上gateway 也是跟视频学的,一些细节问题也不是特别清楚

经验分享 程序员 微信小程序 职场和发展