自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

[[375777]]

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

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

1.AddRequestHeader 過(guò)濾器工廠

作用:在請(qǐng)求中添加header信息(向目標(biāo)服務(wù))。對(duì)應(yīng)過(guò)濾器工廠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ù),測(cè)試:


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} 

 測(cè)試:


2.AddRequestParameter 過(guò)濾器工廠

作用:給下游服務(wù)添加查詢參數(shù)。對(duì)應(yīng)過(guò)濾器工廠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.     } 

 測(cè)試:

 

 

3.AddResponseHeader 過(guò)濾器工廠

作用:在響應(yīng)header中添加頭信息。對(duì)應(yīng)過(guò)濾器工廠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 

 測(cè)試:


4.PrefixPath 過(guò)濾器工廠

作用:為原始的請(qǐng)求路徑添加一個(gè)前綴路徑。對(duì)應(yīng)過(guò)濾器工廠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過(guò)濾器,如果不配置StripPrefix那么在做請(qǐng)求的時(shí)候轉(zhuǎn)發(fā)到服務(wù)的地址將是:http://xxxx/api-1/api-1/api/query明顯這個(gè)地址在我們的服務(wù)上是不存在的。

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

測(cè)試:


5.StripPrefix 過(guò)濾器工廠

作用:截取指定段的請(qǐng)求路徑后進(jìn)行路由轉(zhuǎn)發(fā)。對(duì)應(yīng)過(guò)濾器工廠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 

 測(cè)試:

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


6.Retry 過(guò)濾器工廠

作用:針對(duì)不同的響應(yīng)結(jié)果進(jìn)行重試。對(duì)應(yīng)過(guò)濾器工廠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 

 說(shuō)明:

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í)拋出異常。

測(cè)試:

成功:

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

失敗:

 

 

7.RedirectTo 過(guò)濾器工廠

作用:將原始請(qǐng)求重定向到指定的Url。對(duì)應(yīng)過(guò)濾器工廠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 過(guò)濾器工廠

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

  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é)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2017-04-12 14:43:01

Spring ClouZuul過(guò)濾器

2023-01-26 01:41:27

核心全局過(guò)濾器

2023-04-14 09:01:25

2023-07-24 08:00:56

客戶端訪問(wèn)指定

2024-04-03 08:08:15

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

2017-05-04 22:30:17

Zuul過(guò)濾器微服務(wù)

2023-02-15 08:12:19

http超時(shí)過(guò)濾器

2022-02-21 23:58:49

Spring過(guò)濾器順序值

2009-07-08 16:07:04

Servlet過(guò)濾器配

2011-06-29 16:14:59

Qt 事件 過(guò)濾器

2021-01-14 07:54:19

Spring Clou應(yīng)用路由

2009-06-18 10:13:00

Hibernate過(guò)濾

2016-12-07 09:56:13

JavaFilter過(guò)濾器

2017-09-15 23:29:53

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

2021-07-05 15:22:03

Servlet過(guò)濾器客戶端

2024-01-05 09:04:35

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

2024-11-04 08:45:48

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

2022-02-16 23:58:41

Spring過(guò)濾器驗(yàn)證碼

2009-07-08 15:30:56

Servlet過(guò)濾器

2009-09-29 13:55:23

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

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