Spring Cloud Gateway笔记

本文详细介绍了Spring Cloud Gateway中的路由谓词工厂,包括After、Before、Between、Cookie、Header、Host、Method、Path、Query和RemoteAddr等,展示了如何通过这些工厂配置路由规则以匹配不同类型的HTTP请求。这些谓词工厂为实现灵活的API路由提供了强大支持。

1. How to Include Spring Cloud Gateway

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

如果你包含了 starter,但是你不想启用网关,则可以设置 spring.cloud.gateway.enabled=false

5. Route Predicate Factories

Spring Cloud Gateway 包含许多内置的路由谓词工厂,所有这些谓词匹配不同的 HTTP 请求属性

5.1. The After Route Predicate Factory

After 路由谓词工厂携带一个参数,即一个 datetime(其实是 Java 的 ZonedDateTime)。该谓词匹配发生在指定时间之后的请求。

spring:
  cloud:
    gateway:
      routes:
      - id: after_route
        uri: http://www.baidu.com
        predicates:
          - After=2021-06-03T10:00:00.000+08:00

5.2. The Before Route Predicate Factory

Before 路由谓词工厂携带一个参数,即一个 datetime(其实是 Java 的 ZonedDateTime)。该谓词匹配发生在指定时间之前的请求。

spring:
  cloud:
    gateway:
      routes:
      - id: before_route
        uri: http://www.baidu.com
        predicates:
          - Before=2021-06-03T10:00:00.000+08:00

5.3. The Between Route Predicate Factory

Between 路由谓词工厂携带两个参数,datetime1datetime2,他们都是 Java 的 ZonedDateTime 对象。该谓词匹配发生在 datetime1 之后,以及 datetime2 之前的请求。datetime2 参数必须在 datetime1 之后。

spring:
  cloud:
    gateway:
      routes:
      - id: method_route
        uri: http://www.baidu.com
        predicates:
          - Between=2017-01-20T17:42:47.789-07:00[America/Denver], 2017-01-21T17:42:47.789-07:00[America/Denver]

5.4. The Cookie Route Predicate Factory

Cookie 路由谓词工厂携带两个参数,nameregexp(本质是 Java 的正则表达式)。该谓词匹配具有给定名称,并且值匹配正则表达式的 cookie。

spring:
  cloud:
    gateway:
      routes:
        - id: method_route
          uri: https://www.baidu.com
          predicates:
            - Cookie=x-token, \w+

5.5. The Header Route Predicate Factory

Header 路由谓词工厂携带两个参数,nameregexp(本质是 Java 的正则表达式)。该谓词匹配具有给定名称,并且值匹配正则表达式的 header。

spring:
  cloud:
    gateway:
      routes:
        - id: method_route
          uri: http://www.baidu.com
          predicates:
            - Header=X-Request-Id, \d+

5.6. The Host Route Predicate Factory

Header 路由谓词工厂携带一个参数:主机名 patterns 列表。模式是一种 Ant 风格的带有 . 作为分隔符的模式。该谓词匹配模式中的的 Host 头部。

spring:
  cloud:
    gateway:
      routes:
        - id: method_route
          uri: http://www.baidu.com
          predicates:
            - Header=X-Request-Id, \d+

消息头部的字段名是大小写不敏感的,也就是头部 X-Request-Id,也可以传递 x-request-id
RFC 2616 https://www.rfc-editor.org/rfc/inline-errata/rfc2616.html,查询 (“:”) 关键字附近文字可以找到:Field names are case-insensitive.

5.7. The Method Route Predicate Factory

Method 路由谓词工厂携带一个参数 methods,该参数是一个或者多个参数:待匹配的 HTTP 方法。

spring:
  cloud:
    gateway:
      routes:
      - id: method_route
        uri: http://www.baidu.com
        predicates:
          - Method=GET,POST

5.8. The Path Route Predicate Factory

spring:
  cloud:
    gateway:
      routes:
        - id: method_route
          uri: http://localhost:8080
          predicates:
            - Path=/echo/{segment}

5.9. The Query Route Predicate Factory

Query 路由谓词工厂携带两个参数,一个必需的 param 和一个可选的 regexp(本质是 Java 的正则表达式)。

spring:
  cloud:
    gateway:
      routes:
        - id: method_route
          uri: https://www.baidu.com
          predicates:
            - Query=id

5.10. The RemoteAddr Route Predicate Factory

RemoteAddr 路由谓词工厂携带一个 sources 列表,这是 CIDR 符号字符串,例如 192.168.0.1/16,此处 192.168.0.1 是 IP 地址,16 是子网掩码。

spring:
  cloud:
    gateway:
      routes:
      - id: remoteaddr_route
        uri: http://www.baidu.com
        predicates:
          - RemoteAddr=192.168.0.187/24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罐装面包

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值