日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringCloud Gateway配置自定义路由404坑

發布時間:2023/12/3 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringCloud Gateway配置自定义路由404坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、場景復現

微服務自定義路由,返回404頁面。

①如圖:

(1)springcloud-gateway的路由設置

@Configuration public class RouteConfig {@Beanpublic RouteLocator customRouteLocator(RouteLocatorBuilder builder) {return builder.routes().route("test", r -> r.path("/csdn/**").uri("https://blog.csdn.net")).route("micro-service", r -> r.path("/micro-service/**").uri("lb://micro-service")).build();} }

(2)micro-service的controller

@RestController public class TestController {@GetMapping("/test")public String test(HttpServletRequest request){return "hello world, uri:" + request.getRequestURI();}}

(3)nacos注冊中心

(4)請求CSDN生效

猜測應該是lb路由不生效,于是改成yaml試試

?

?

二、route改為yaml配置

(1)配置/micro-service/**則有效②

訪問結果:

(2)配置/micro/**則訪問無效

訪問/micro/test 404:

無意中訪問/micro-service/test有結果③:

訪問/micro-service1/test 拋異常:

?

三、反思現象

(1)深探問題

訪問配置的路由404,訪問注冊的服務名有結果,訪問不存在的路由則報錯。非常郁悶,究竟哪里配置錯誤了。

猜測肯定是訪問到了micro-service,但為什么沒用結果。于是給micro-service服務配置默認路徑,才發現原因

@RestController public class TestController {@GetMapping("/test")public String test(HttpServletRequest request){return "hello world, uri:" + request.getRequestURI();}@GetMapping("/**")public String defaultPath(HttpServletRequest request){return "hello world, uri:" + request.getRequestURI();} }

/micro/test請求有結果,如下:?

轉發的路徑多了/micro,帶多一級路徑轉發了。

(2)查看gateway的說明文檔

1)發現path和PrefixPath?的區別

path是帶匹配路徑轉發請求,需要StripPrefix來截掉匹配模式不轉發。

PrefixPath是不轉發匹配的模式。

gateway path這里跟zuul的默認去掉匹配模式路徑不一樣,被zuul誤導了。

2)gateway自動服務注冊發現路由

①問題是沒有gateway網關自動服務注冊發現路由,通過編碼的RouteLocator設置帶前綴請求404

②問題是yaml配置加載后,配置了gateway網關自動服務注冊發現路由,覆蓋了yaml的配置,所以能訪問成功

③問題是配置了gateway網關自動服務注冊發現路由

?

?

四、解決方案

(1)使用服務注冊自動發現路由

cloud:gateway:discovery:locator:enabled: truelower-case-service-id: true

(2)path路由加去掉前綴信息

cloud:gateway:routes:- id: micro-serviceuri: lb://micro-servicepredicates:- Path=/micro-service/**filters:- StripPrefix=1

?

?

總結

以上是生活随笔為你收集整理的SpringCloud Gateway配置自定义路由404坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。