色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

spring cloud gateway 如何修改請求路徑Path

瀏覽:21日期:2023-07-06 14:42:40
一、背景

項目升級改造,老項目使用請求url中特定參數進行服務路由,現使用gateway網關進行路由服務信息

二、根據參數信息修改請求路徑Path

@Componentpublic class RequestFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest str = exchange.getRequest();if (str.getQueryParams().containsKey('demo')){ addOriginalRequestUrl(exchange, str.getURI()); String newPath =str.getPath()+'demo'; ServerHttpRequest newRequest = str.mutate() .path(newPath) .build(); exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, newRequest.getURI()); return chain.filter(exchange.mutate() .request(newRequest).build());}return chain.filter(exchange); } @Override public int getOrder() {return 1; }

1、根據url路徑是否包含特定參數demo字段進行過濾

2、注意這個只是修改path路徑值,并不能修改gateway路由得serverid

3、getOrder方法 執行順先順序0-100

spring cloud gateway 設置context-path服務路由404排查一、背景

最近做網關重構,技術選型為spring cloud gateway,采用consul作為配置中心和注冊中心,秉承不重啟原則,網關內部實現動態路由機制,采用定時任務定時更新網關路由信息。

二、服務信息

微服務網關:spring-cloud-gateway

微服務:order-service、user-service

三、問題描述

因為網關服務集成了knife4j,因此可以通過訪問http://網關ip:port/doc.html,即可訪問所有在同一個注冊中心的服務的knife4j信息,但是實際訪問時用戶服務相關接口報404錯誤。

四、問題排查

1、排查發現order-service未設置server.servlet.context-path,user-service有設置;

2、驗證context-path的影響發現在路由設置時path字段值必須加前綴再截取才可以正常路由;

3、由于公司網關是既有產品,當前是技術框架重構,因此不能改動原來接口訪問路徑,因此不可以在原有路徑前面再加前綴;

排查源碼發現請求會經過FilteringWebHandler的filter方法,此方法在路由過程中會走12個過濾器,其中第5個過濾器

RewritePathGatewayFilterFactory中的apply方法會匹配服務啟動時加載的regexp正則,從而對服務path進行改寫。

源碼如下:

spring cloud gateway 如何修改請求路徑Path

五、解決方案

1)若配置路由URI為lb,則注冊中心服務名稱不能和server.servlet.context-path名稱一致,否則contextPath會被改寫為空字符串;

2)若注冊中心和server.servlet.context-path必須一致,則斷言中設置Path時需在contextPath前包裝一層前綴,且Filter中需截取第一個字符串;

3)禁止gateway網關主動從consul拉取路由信息并設置默認過濾器,該操作會設置默認過濾規則,reWritePath匹配正則修改請求路徑

在啟動類添加注解:

@SpringBootApplication( exclude = org.springframework.cloud.gateway.discovery.GatewayDiscoveryClientAutoConfiguration.class)

4)推薦使用

重寫過濾鏈(只需添加如下配置):

spring.cloud.gateway.discovery.locator.filters[0]=PreserveHostHeader

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 综合 欧美 国产 视频二区 | 国产欧美综合在线一区二区三区 | 夜夜春夜夜夜夜猛噜噜噜噜噜 | 国产私拍福利精品视频推出 | 国产亚洲精品久久久久久久网站 | 亚洲国产精品一区二区久久 | 国产高清一区二区三区免费视频 | 97在线免费观看视频 | 91伦理视频 | a毛片免费在线观看 | 国内真实愉拍系列情侣自拍 | 日本三级11k影院在线 | 日本尹人综合香蕉在线观看 | 毛片免费观看视频 | 黄网站免费在线 | 中国美女乱淫免费看视频 | 免费在线国产视频 | 三级理论手机在线观看视频 | 一级毛片区| 日本美女性爱 | 91久色视频| 另类视频在线观看 | 一区二区三区不卡在线观看 | 午夜性爽爽爽 | 久久香蕉国产线看观看亚洲片 | 在线看精品 | 久久亚洲高清观看 | 成人在线免费观看网站 | 国产日产久久高清欧美一区 | 久久综合九色综合欧洲色 | 一级毛片在线不卡直接观看 | 国产午夜亚洲精品第一区 | 欧美成a人片在线观看久 | 国产成人看片免费视频观看 | 亚洲一区二区精品 | 久草热草 | 男女男在线精品网站免费观看 | 亚洲综合日韩精品欧美综合区 | 日韩欧美高清在线观看 | 亚洲欧美日韩在线精品一区二区 | 国产精品密蕾丝视频 |