成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Spring Cloud Gateway應(yīng)用2內(nèi)置過濾器

系統(tǒng)
路由過濾器允許以某種方式修改傳入的HTTP請(qǐng)求或輸出HTTP響應(yīng)。路由過濾器的作用域?yàn)樘囟酚伞pring Cloud Gateway包括許多內(nèi)置的GatewayFilter工廠。

[[375777]]

 環(huán)境:springboot2.3.7 + spring cloud Hoxton.SR9

路由過濾器允許以某種方式修改傳入的HTTP請(qǐng)求或輸出HTTP響應(yīng)。路由過濾器的作用域?yàn)樘囟酚伞pring Cloud Gateway包括許多內(nèi)置的GatewayFilter工廠。

1.AddRequestHeader 過濾器工廠

作用:在請(qǐng)求中添加header信息(向目標(biāo)服務(wù))。對(duì)應(yīng)過濾器工廠AddRequestHeaderGatewayFilterFactory

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       enabled: true 
  5.       discovery: 
  6.         locator: 
  7.           enabled: true 
  8.           lowerCaseServiceId: true 
  9.       routes: 
  10.       - id: AddRequestHeader_filter 
  11.         uri: http://localhost:20001 
  12.         predicates: 
  13.         - Path=/api/{user
  14.         filters: 
  15.         - AddRequestHeader=access-token,123456789 

 向目標(biāo)服務(wù)http://localhost:20001/api/xxx添加請(qǐng)求header access-token信息。

20001服務(wù)中有對(duì)應(yīng)的接口:

  1. @RestController 
  2. @RequestMapping("/api/"
  3. public class UsersController { 
  4.      
  5.     @Resource 
  6.     private HttpServletRequest request ; 
  7.      
  8.     @GetMapping("/{user}"
  9.     public Object save(@PathVariable("user") String username) { 
  10.         System.out.println(username) ; 
  11.         System.out.println("access-token = " + request.getHeader("access-token")) ; 
  12.         return "success" ; 
  13.     } 
  14.      

 啟動(dòng)兩個(gè)服務(wù),測試:


20001服務(wù)控制臺(tái)輸出:


動(dòng)態(tài)header信息配置:

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       enabled: true 
  5.       discovery: 
  6.         locator: 
  7.           enabled: true 
  8.           lowerCaseServiceId: true 
  9.       routes: 
  10.       - id: AddRequestHeader_filter 
  11.         uri: http://localhost:20001 
  12.         predicates: 
  13.         - Path=/api/{token} 
  14.         filters: 
  15.         - AddRequestHeader=access-token,{token} 

 測試:


2.AddRequestParameter 過濾器工廠

作用:給下游服務(wù)添加查詢參數(shù)。對(duì)應(yīng)過濾器工廠AddRequestParameterGatewayFilterFactory

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       enabled: true 
  5.       discovery: 
  6.         locator: 
  7.           enabled: true 
  8.           lowerCaseServiceId: true 
  9.       routes: 
  10.       - id: add_request_parameter_route 
  11.         uri: http://localhost:20001 
  12.         predicates: 
  13.         - Path=/api/query 
  14.         filters: 
  15.         - AddRequestParameter=username, admin 

 目標(biāo)服務(wù):

  1. @RestController 
  2. @RequestMapping("/api/"
  3. public class UsersController { 
  4.      
  5.     @GetMapping("/query"
  6.     public Object query(String username) { 
  7.         return "query " + username ; 
  8.     } 

 測試:

 

 

3.AddResponseHeader 過濾器工廠

作用:在響應(yīng)header中添加頭信息。對(duì)應(yīng)過濾器工廠AddResponseHeaderGatewayFilterFactory

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       enabled: true 
  5.       discovery: 
  6.         locator: 
  7.           enabled: true 
  8.           lowerCaseServiceId: true 
  9.       routes: 
  10.       - id: add_response_header_route 
  11.         uri: http://localhost:20001 
  12.         predicates: 
  13.         - Path=/api/query 
  14.         filters: 
  15.         - AddResponseHeader=server-id, nginx-001 

 測試:


4.PrefixPath 過濾器工廠

作用:為原始的請(qǐng)求路徑添加一個(gè)前綴路徑。對(duì)應(yīng)過濾器工廠PrefixPathGatewayFilterFactory

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       enabled: true 
  5.       discovery: 
  6.         locator: 
  7.           enabled: true 
  8.           lowerCaseServiceId: true 
  9.       routes: 
  10.       - id: prefixpath_route 
  11.         uri: http://localhost:20001 
  12.         predicates: 
  13.         - Path=/api-1/** 
  14.         filters: 
  15.         - PrefixPath=/api-1 
  16.         - StripPrefix=2 

 這里為了演示用到了StripPrefix過濾器,如果不配置StripPrefix那么在做請(qǐng)求的時(shí)候轉(zhuǎn)發(fā)到服務(wù)的地址將是:http://xxxx/api-1/api-1/api/query明顯這個(gè)地址在我們的服務(wù)上是不存在的。

StripPrefix這個(gè)過濾器的作用就是截取路徑,截取幾段路徑。如這里的http://xxxx/api-1/api-1/api/query 那會(huì)截取為http://xxxx/api/query再進(jìn)行轉(zhuǎn)發(fā)。

測試:


5.StripPrefix 過濾器工廠

作用:截取指定段的請(qǐng)求路徑后進(jìn)行路由轉(zhuǎn)發(fā)。對(duì)應(yīng)過濾器工廠StripPrefixGatewayFilterFactory

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       enabled: true 
  5.       discovery: 
  6.         locator: 
  7.           enabled: true 
  8.           lowerCaseServiceId: true 
  9.       routes: 
  10.       - id: prefixpath_route 
  11.         uri: http://localhost:20001 
  12.         predicates: 
  13.         - Path=/api-1/** 
  14.         filters: 
  15.         - StripPrefix=1 

 測試:

請(qǐng)求:http://xxx/api-1/api/query 截取后:http://xxx/api/query 這里StripPrefix=1表示只截取幾段路徑。


6.Retry 過濾器工廠

作用:針對(duì)不同的響應(yīng)結(jié)果進(jìn)行重試。對(duì)應(yīng)過濾器工廠RetryGatewayFilterFactory

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       enabled: true 
  5.       discovery: 
  6.         locator: 
  7.           enabled: true 
  8.           lowerCaseServiceId: true 
  9.       routes: 
  10.       - id: retry_test 
  11.         uri: http://localhost:20001 
  12.         predicates: 
  13.         - Path=/api-1/** 
  14.         filters: 
  15.         - StripPrefix=1 
  16.         - name: Retry 
  17.           args: 
  18.             retries: 3 
  19.             statuses: INTERNAL_SERVER_ERROR 
  20.             methods: GET,POST 

 說明:

retries:重試次數(shù)

statuses:需要重試的狀態(tài)碼,取值在 org.springframework.http.HttpStatus 中

methods:需要重試的請(qǐng)求方法,取值在 org.springframework.http.HttpMethod 中

series:HTTP狀態(tài)碼序列,取值在 org.springframework.http.HttpStatus.Series 中

exceptions:異常列表,對(duì)于拋出的哪些異常將會(huì)進(jìn)行重試。

接口服務(wù):

  1. @GetMapping("/query"
  2.     public Object query(String username) { 
  3.         if ("dead".equals(username)) { 
  4.             throw new RuntimeException("錯(cuò)誤的用戶名") ; 
  5.         } 
  6.         return "query " + username ; 
  7.     } 

 當(dāng)請(qǐng)求參數(shù)username為dead時(shí)拋出異常。

測試:

成功:

Spring Cloud Gateway應(yīng)用詳解2內(nèi)置過濾器

失敗:

 

 

7.RedirectTo 過濾器工廠

作用:將原始請(qǐng)求重定向到指定的Url。對(duì)應(yīng)過濾器工廠RedirectToGatewayFilterFactory

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       enabled: true 
  5.       discovery: 
  6.         locator: 
  7.           enabled: true 
  8.           lowerCaseServiceId: true 
  9.       routes: 
  10.       - id: prefixpath_route 
  11.         uri: http://localhost:20001 
  12.         predicates: 
  13.         - Path=/api-1/** 
  14.         filters: 
  15.         - RedirectTo=302, http://localhost:20001/api/query 

 請(qǐng)求將會(huì)被重定向到 http://localhost:20001/api/query

8.default 過濾器工廠

作用:默認(rèn)過濾器,為所有的路由配置默認(rèn)的過濾功能。

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       enabled: true 
  5.       discovery: 
  6.         locator: 
  7.           enabled: true 
  8.           lowerCaseServiceId: true 
  9.       default-filters: 
  10.       - PrefixPath=/api-1 
  11.       - AddRequestHeader=access-token,123 

 以上配置將會(huì)為所有的路由增加前綴及請(qǐng)求header信息。

以上是用的比較多的一些內(nèi)置Filter。

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2017-04-12 14:43:01

Spring ClouZuul過濾器

2023-01-26 01:41:27

核心全局過濾器

2023-04-14 09:01:25

2023-07-24 08:00:56

客戶端訪問指定

2024-04-03 08:08:15

謂詞網(wǎng)關(guān)開發(fā)

2023-02-15 08:12:19

http超時(shí)過濾器

2017-05-04 22:30:17

Zuul過濾器微服務(wù)

2009-07-08 16:07:04

Servlet過濾器配

2011-06-29 16:14:59

Qt 事件 過濾器

2022-02-21 23:58:49

Spring過濾器順序值

2021-01-14 07:54:19

Spring Clou應(yīng)用路由

2009-06-18 10:13:00

Hibernate過濾

2016-12-07 09:56:13

JavaFilter過濾器

2017-09-15 23:29:53

Spring Clou微服務(wù)架構(gòu)過濾器

2021-07-05 15:22:03

Servlet過濾器客戶端

2024-01-05 09:04:35

隆過濾器數(shù)據(jù)結(jié)構(gòu)哈希函數(shù)

2024-11-04 08:45:48

布隆過濾器元數(shù)據(jù)指紋值

2009-07-08 15:30:56

Servlet過濾器

2009-07-14 09:09:08

Swing模型過濾器

2009-09-29 13:55:23

Hibernate設(shè)置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 在线免费观看黄色av | 99国产精品久久久 | 国产不卡视频在线 | 992人人草| 黄色大片网 | 天堂成人国产精品一区 | 波多野结衣一区二区三区在线观看 | 美女福利网站 | 在线国产欧美 | 在线视频一区二区三区 | 人成在线视频 | 亚洲国产精品人人爽夜夜爽 | 日韩成人影院在线观看 | 精品丝袜在线 | www.亚洲精品| 午夜精品久久久久久久久久久久 | 国产999精品久久久影片官网 | 国产目拍亚洲精品99久久精品 | 一级全黄少妇性色生活免费看 | 日韩免费一级 | 免费在线观看av片 | 国产亚洲精品久久久久动 | 亚洲 一区 | 欧美日韩一区二区三区四区 | 99精品国自产在线观看 | 中文字幕高清免费日韩视频在线 | 高清免费av | 国产精品久久久久久久模特 | 午夜影院在线 | 国产视频精品免费 | 巨大荫蒂视频欧美另类大 | 亚洲人久久 | 日韩亚洲欧美一区 | 久久99精品视频 | 成人三级影院 | 日韩亚洲一区二区 | 婷婷在线免费 | 国产二区三区 | 亚洲精品在线播放 | 中文字幕国产高清 | 天天操综合网站 |