最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Cloud Gateway內置的斷言和過濾器作用說明

 更新時間:2024年06月19日 10:16:04   作者:kse_music  
這篇文章主要介紹了Spring Cloud Gateway內置的斷言和過濾器作用說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

前言

對應版本3.1.7對應SpringCloud版本2021.0.7

  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-gateway</artifactId>
      <version>3.1.7</version>
  </dependency>

一、內置斷言

1.AfterRoutePredicateFactory

作用:判斷當請求時間是否在指定配置時間之后

使用方式

spring.cloud.gateway.routes[0].predicates[0]=After=2019-04-20T17:42:47.789+08:00[Asia/Shanghai]
#也可以用下面的方式配置
#spring.cloud.gateway.routes[0].predicates[0].name=After
#spring.cloud.gateway.routes[0].predicates[0].args.datetime=2019-04-20T17:42:47.789+08:00[Asia/Shanghai]

使用場景:當上線一新服務時在未來某個時間提供服務

兩種配置方式的區(qū)別:

  • 第一種便捷方式配置的值是按逗號分隔,再按shortcutFieldOrder方法返回的字段順序最后綁定的配置對象上。
  • 第二種配置方式即標準配置方式,會把整個map作為配置對象綁定源
  • 區(qū)別就是第一種最多只會綁定指定的字段盡管可能配置類字段有其它字段!

2.BeforeRoutePredicateFactory

作用:與AfterRoutePredicateFactory正好相反,判斷當請求時間是否在指定配置時間之前

使用方式

spring.cloud.gateway.routes[0].predicates[0]=Before=2019-04-20T17:42:47.789+08:00[Asia/Shanghai]

使用場景:指定服務在指定時間以內訪問

3.BetweenRoutePredicateFactory

作用:判斷當請求時間是否在指定配置時間之間

使用方式

spring.cloud.gateway.routes[0].predicates[0].name=Between
#在datetime1后面即請求時間大于該時間
spring.cloud.gateway.routes[0].predicates[0].args.datetime1=2029-04-20T17:42:47.789+08:00[Asia/Shanghai]
#在datetime2前面即請求時間小于該時間
spring.cloud.gateway.routes[0].predicates[0].args.datetime2=2019-04-20T17:42:47.789+08:00[Asia/Shanghai]

使用場景:指定服務在指定時間范圍內訪問

4.CloudFoundryRouteServiceRoutePredicateFactory

作用:判斷請求是否針對 Cloud Foundry 路由服務(通過判斷請求頭中是否有X-CF-Forwarded-Url、X-CF-Proxy-Signature、X-CF-Proxy-Metadata這個三個配置)

使用方式

spring.cloud.gateway.routes[0].predicates[0]=CloudFoundryRouteService

5.CookieRoutePredicateFactory

作用:判斷請求中cookie是否包含指定字段的以及對應的值是否符合指定的模式(正則表達式)

使用方式

# cookie中id的值必須是數(shù)字
spring.cloud.gateway.routes[0].predicates[0]=Cookie=id, \\d+

6.HeaderRoutePredicateFactory

作用:判斷請求頭中是否包含指定字段的以及對應的值是否符合指定的模式(正則表達式)

使用方式

# header中X-Request-Id的值必須是數(shù)字
spring.cloud.gateway.routes[0].predicates[0]=Header=X-Request-Id, \\d+

7.HostRoutePredicateFactory

作用:接收一個參數(shù),主機名模式。判斷請求的Host是否滿足匹配規(guī)則

使用方式

spring.cloud.gateway.routes[0].predicates[0]=Host=api1.hiboot.cn,api2.hiboot.cn

8.MethodRoutePredicateFactory

作用:判斷請求方法類型是否跟指定的類型匹配

使用方式

#指定路由只接受post和get請求
spring.cloud.gateway.routes[0].predicates[0]=Method=POST,GET

9.PathRoutePredicateFactory

作用:判斷請求的URI部分是否滿足路徑規(guī)則。使用PathContainer解析

使用方式

spring.cloud.gateway.routes[0].predicates[0]=Path=/web/**

10.QueryRoutePredicateFactory

作用: 判斷請求參數(shù)(QueryParams)是否具有給定名稱且值與正則表達式匹配

使用方式

#指定請求參數(shù)age必須是數(shù)字
spring.cloud.gateway.routes[0].predicates[0]=Query=age,\\d+

11.ReadBodyRoutePredicateFactory

作用:讀取請求體并緩存,后續(xù)調用謂詞不需要再次反序列化

使用方式

spring.cloud.gateway.routes[0].predicates[0].name=ReadBody
spring.cloud.gateway.routes[0].predicates[0].args.inClass=java.lang.String
spring.cloud.gateway.routes[0].predicates[0].args.predicate=#{@testRequestBody}

12.RemoteAddrRoutePredicateFactory

作用:判斷請求訪問者的地址是否在指定指定ip/mask內

使用方式

spring.cloud.gateway.routes[0].predicates[0]=RemoteAddr=192.168.1.0/24

使用場景:配置服務只允許指定ip可訪問

13.WeightRoutePredicateFactory

作用:接收一個[組名,權重], 然后對于同一個組內的路由按照權重轉發(fā)

使用方式

spring.cloud.gateway.routes[0].predicates[0]=Weight=group1,1

14.XForwardedRemoteAddrRoutePredicateFactory

作用:判斷是否允許根據(jù)“ X-Forward-For” HTTP標頭過濾請求

使用方式

spring.cloud.gateway.routes[0].predicates[0]=XForwardedRemote=192.168.1.0/24,192.168.4.0/24

使用場景:與反向代理一起使用,例如負載平衡器或Web應用程序防火墻僅當請求來自可信賴的IP地址列表時,才允許該請求反向代理。

二、內置過濾器

1.GlobalFilter

  • RemoveCachedBodyFilter
  • AdaptCachedBodyGlobalFilter
  • NettyWriteResponseFilter
  • GatewayMetricsFilter
  • RouteToRequestUrlFilter
  • ReactiveLoadBalancerClientFilter
  • LoadBalancerServiceInstanceCookieFilter
  • WebsocketRoutingFilter
  • NettyRoutingFilter
  • ForwardRoutingFilter

2.GatewayFilter

  • AddRequestHeaderGatewayFilterFactory
  • MapRequestHeaderGatewayFilterFactory
  • AddRequestParameterGatewayFilterFactory
  • AddResponseHeaderGatewayFilterFactory
  • ModifyRequestBodyGatewayFilterFactory
  • DedupeResponseHeaderGatewayFilterFactory
  • ModifyResponseBodyGatewayFilterFactory
  • CacheRequestBodyGatewayFilterFactory
  • PrefixPathGatewayFilterFactory
  • PreserveHostHeaderGatewayFilterFactory
  • RedirectToGatewayFilterFactory
  • RemoveRequestHeaderGatewayFilterFactory
  • RemoveRequestParameterGatewayFilterFactory
  • RemoveResponseHeaderGatewayFilterFactory
  • RequestRateLimiterGatewayFilterFactory
  • RewritePathGatewayFilterFactory
  • RetryGatewayFilterFactory
  • SetPathGatewayFilterFactory
  • SecureHeadersGatewayFilterFactory
  • SetRequestHeaderGatewayFilterFactory
  • SetRequestHostHeaderGatewayFilterFactory
  • SetResponseHeaderGatewayFilterFactory
  • RewriteResponseHeaderGatewayFilterFactory
  • RewriteLocationResponseHeaderGatewayFilterFactory
  • SetStatusGatewayFilterFactory
  • SaveSessionGatewayFilterFactory
  • StripPrefixGatewayFilterFactory
  • RequestHeaderToRequestUriGatewayFilterFactory
  • RequestSizeGatewayFilterFactory
  • RequestHeaderSizeGatewayFilterFactory

三、配置參數(shù)解析模式

1.DEFAULT

配置的默認處理方式 :如果是便捷配置方式會根據(jù)接口中shortcutFieldOrder方法返回的字段順序注入

例如:spring.cloud.gateway.routes[1].predicates[2]=Header=X-Request-Id, \\d+,則會將Header=X-Request-Id設置name,\\d+設置給regex

	default List<String> shortcutFieldOrder() {
		return Arrays.asList("header", "regexp");
	}

	public static class Config {

		@NotEmpty
		private String header;

		private String regexp;
		...

	}

2.GATHER_LIST

該解析方式的條件必須是一個字段,將配置參數(shù)解析成集合

例如:spring.cloud.gateway.routes[1].predicates[2]=Method=post,get

	default List<String> shortcutFieldOrder() {
		return Arrays.asList("methods");
	}

	public static class Config {

		private HttpMethod[] methods;

		public HttpMethod[] getMethods() {
			return methods;
		}

		public void setMethods(HttpMethod... methods) {
			this.methods = methods;
		}

	}

3.GATHER_LIST_TAIL_FLAG

該解析方式的條件必須是兩個字段,前一個將配置參數(shù)解析成集合,后面一個必須要是Boolean類型數(shù)據(jù)

例如:spring.cloud.gateway.routes[1].predicates[2]=Path=/web/**, false

	default List<String> shortcutFieldOrder() {
		return Arrays.asList("patterns", "matchTrailingSlash");
	}

    public static class Config {

		private List<String> patterns = new ArrayList<>();

		private boolean matchTrailingSlash = true;
        
        ...
	}

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java8接口的默認方法

    Java8接口的默認方法

    這篇文章主要為大家介紹了Java8接口的默認方法,還為大家默認方法的多重繼承,感興趣的朋友可以參考一下
    2016-01-01
  • Assert.assertNotNull()斷言是否是空問題

    Assert.assertNotNull()斷言是否是空問題

    這篇文章主要介紹了Assert.assertNotNull()斷言是否是空問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • python實現(xiàn)高斯模糊及原理詳解

    python實現(xiàn)高斯模糊及原理詳解

    高斯模糊是一種常見的模糊技術,本文主要介紹了python實現(xiàn)高斯模糊及原理詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Java面試題沖刺第二天--Redis篇

    Java面試題沖刺第二天--Redis篇

    這篇文章主要為大家分享了最有價值的三道java面試題,涵蓋內容全面,包括數(shù)據(jù)結構和算法相關的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Springboot使用test無法啟動問題的解決

    Springboot使用test無法啟動問題的解決

    這篇文章主要介紹了Springboot使用test無法啟動問題的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Mybatis-plus的selectPage()分頁查詢不生效問題解決

    Mybatis-plus的selectPage()分頁查詢不生效問題解決

    本文主要介紹了Mybatis-plus的selectPage()分頁查詢不生效問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Java實現(xiàn)讀取CSV文件并將數(shù)據(jù)放入對象

    Java實現(xiàn)讀取CSV文件并將數(shù)據(jù)放入對象

    CSV文件是一種常見的數(shù)據(jù)存儲格式,廣泛應用于數(shù)據(jù)交換,日志記錄和表格數(shù)據(jù)處理,在Java開發(fā)中,讀取CSV文件并將數(shù)據(jù)映射到對象中是常見的需求,本文將詳細介紹幾種常見方法,有需要的可以了解下
    2025-06-06
  • ArrayList和LinkedList區(qū)別及使用場景代碼解析

    ArrayList和LinkedList區(qū)別及使用場景代碼解析

    這篇文章主要介紹了ArrayList和LinkedList區(qū)別及使用場景代碼解析,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • SpringBoot綁定配置文件中變量的四種方式總結

    SpringBoot綁定配置文件中變量的四種方式總結

    當在Spring Boot中需要綁定配置文件中的變量時,可以使用以下注解:@PropertySourc,@Value,@Environment,@ConfigurationProperties,具體實現(xiàn)代碼示例文中講解的非常詳細,需要的朋友可以參考下
    2023-11-11
  • java實現(xiàn)同態(tài)加密算法的實例代碼

    java實現(xiàn)同態(tài)加密算法的實例代碼

    這篇文章主要給大家介紹了關于java實現(xiàn)同態(tài)加密算法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12

最新評論

博罗县| 康乐县| 卢氏县| 佛坪县| 时尚| 洛浦县| 渭南市| 芷江| 绿春县| 毕节市| 仙桃市| 松江区| 渭源县| 永兴县| 介休市| 柳江县| 怀宁县| 高陵县| 汕头市| 德清县| 西畴县| 芜湖市| 皋兰县| 岳阳市| 滦平县| 蕲春县| 景泰县| 怀集县| 双江| 新干县| 绿春县| 宁河县| 英德市| 景东| 新巴尔虎右旗| 休宁县| 翁源县| 江达县| 桃园县| 赣榆县| 漯河市|