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

http://localhost:9999/admin/categories?token=*******

原因:

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,最后相当于http://localhost:9999/categories?token=*******,这样请求就会打到admins 项目中,刚好路径/admin/**满足,但是admins 项目时没有categories 接口的,所以会报404错误。

改进方法:

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

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

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐