【ruoyi-cloud】解决网关异常处理数据接口响应code“:500,“msg“:404 NOT_FOUND
项目场景:
新增模块后,前端打开页面数据接口响应异常
问题描述
新增模块前端页面没有数据。控制台报错,网络响应 {“code”:500,“msg”:“404 NOT_FOUND”}
[网关异常处理]请求路径:/basic/list,异常信息:404 NOT_FOUND
basic:1 Unchecked runtime.lastError: can not use with devtools
request.js:99 Uncaught (in promise) Error: 404 NOT_FOUND
at request.js:99:29
at async Axios.request (axios.js?v=e6359679:2115:14)
at Axios.request (axios.js?v=e6359679:2119:41)
(匿名) @ request.js:99
Promise.then
getList @ index.vue:216
setup @ index.vue:320

原因分析:
Gateway 没有配置过滤器路由规则,导致没有把api请求正确的发送到对应服务上
解决方案:


复制一份system的配置加入到低51行下,把system改为你的模块名字
id: 你的模块文件bootstrap.yml里的spring.application.name: ruoyi-basic # 这里就是服务 ID
url: 是 # 指向ruoyi-basic服务(通过服务ID)
predicates: - Path=/basic/(断言规则)
作用:判断请求的路径是否符合规则,只有符合规则的请求才会被当前路由处理。
解释:
Path=/basic/ 表示:当客户端请求的路径以 /basic/ 开头时(例如 /basic/user、/basic/exam/123 等),该请求会被匹配到当前路由(ruoyi-basic 服务)。
** 是通配符,表示 /basic/ 后面可以跟任意字符(包括多级路径)。
filters: - StripPrefix=1(过滤器规则)
作用:对匹配到的请求路径进行修改后,再转发到目标服务(ruoyi-basic)。
解释:
StripPrefix=1 表示:移除请求路径中最前面的 1 级前缀。
举例:
客户端发送请求:http://网关地址/basic/my/list
经过 StripPrefix=1 过滤后,路径中的 /basic 被移除,实际转发到 ruoyi-basic 服务的路径变
http://网关地址/my/list
注意查看api接口文件地址路径,自己拼接地址测试若是只返回404则是你的地址路径没有拼接对,这里自己调整测试

遇到第二种情况,怎么测试请求都发不到网关、不走网关单模块方法也不行,原因是改了文件路径,却没有改包名,导致包名和实际的文件路径对应不上,导致能运行成功但是不进接口,重新修改包名或者新建包移动文件即可

更多推荐

所有评论(0)