Spring Cloud Gateway 2 斷言


Spring Cloud Gateway 斷言

Spring Cloud Gateway提供了很多斷言設置,當http請求進入Spring Cloud Gateway時,網關中的路由斷言工廠會根基配置的路由規則,對http請求進行斷言匹配,匹配成功的請求進行路由轉發,失敗的直接返回是錯誤信息。

以下是常用的斷言工廠

After

設定一個UTC時間,此時間之后的請求會成功,此時間之前的請求會404

UTC 時間生成:

//比當前時間早一小時的時間
String minTime = ZonedDateTime.now().minusHours(1).format(DateTimeFormatter.ISO_ZONED_DATE_TIME);
System.out.println(minTime);

java配置

@Bean
public RouteLocator customRoteLocator(RouteLocatorBuilder builder) {
    //生成一個比當前時間早一個小時的UTC時間
    ZonedDateTime minusTime = LocalDateTime.now().minusHours(1).atZone(ZoneId.systemDefault());
    return builder.routes()
            .route("after_route", predicateSpec -> predicateSpec.after(minusTime)
                    .uri("http://baidu.com"))
            .build();
}

yml配置

spring:
  cloud:
    gateway:
      routes:
      - id: after_route
        uri: https://example.org
        predicates:
        - After=2017-01-20T17:42:47.789-07:00[America/Denver]

Before

設定一個時間,此時間之前的請求會成功,此時間之后的請求會404

spring:
  cloud:
    gateway:
      routes:
      - id: before_route
        uri: https://example.org
        predicates:
        - Before=2017-01-20T17:42:47.789-07:00[America/Denver]

Between

設定一個時間區間,此時間區間內的請求會成功

spring:
  cloud:
    gateway:
      routes:
      - id: between_route
        uri: https://example.org
        predicates:
        - Between=2017-01-20T17:42:47.789-07:00[America/Denver], 2017-01-21T17:42:47.789-07:00[America/Denver]

設置兩個參數:cookie的key和value,當請求中攜帶一條此信息時,請求成功;

spring:
  cloud:
    gateway:
      routes:
      - id: after_route
        uri: https://example.org
        predicates:
        - Cookie=mycookie,mycookievalue

配置多個值:

pring:
  cloud:
    gateway:
      routes:
      - id: after_route
        uri: https://example.org
        predicates:
        - name: Cookie
          args:
            name: mycookie
            regexp: mycookievalue

設置兩個參數:header的key和value,當請求攜帶匹配信息時,請求成功

spring:
  cloud:
    gateway:
      routes:
      - id: header_route
        uri: https://example.org
        predicates:
         - Header=key,value

Host

設定一個主機名,當請求信息來自此主機時,請求成功;

spring:
  cloud:
    gateway:
      routes:
      - id: host_route
        uri: https://example.org
        predicates:
        - Host=**.somehost.org,**.anotherhost.org

Method

指定請求的方法:如POST,GET

spring:
  cloud:
    gateway:
      routes:
      - id: method_route
        uri: https://example.org
        predicates:
        - Method=GET,POST

Path

指定路徑下的請求,進行轉發

spring:
  cloud:
    gateway:
      routes:
      - id: path_route
        uri: https://example.org
        predicates:
        - Path=/red/{segment},/blue/{segment}

Query

指定一個請求參數的key,符合條件的進行轉發

如:http://localhost:8080/hello?key=value 中的key

spring:
  cloud:
    gateway:
      routes:
      - id: query_route
        uri: https://example.org
        predicates:
        - Query=key
spring:
  cloud:
    gateway:
      routes:
      - id: query_route
        uri: https://example.org
        predicates:
        - Query=red, gree.

RemoteAddr

指定ip或ip段,符合條件的轉發成功

spring:
  cloud:
    gateway:
      routes:
      - id: remoteaddr_route
        uri: https://example.org
        predicates:
        - RemoteAddr=192.168.1.1/24


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM