当前位置:   article > 正文

SpringCloud微服务中gateway网关的使用(三)——predicates的九种常用配置方式_网关predicates用法

网关predicates用法


一。环境准备与说明

1.网关子模块的application.yml配置文件如下:

eureka:
  client:
    serviceUrl:
      #服务注册地址
      defaultZone: http://localhost:8088/eureka/
  instance:
    #服务实例名称
    instance-id: gateway-9527
    #是否暴露服务ip地址
    prefer-ip-address: true
server:
  #运行端口
  port: 9527
spring:
  application:
    #服务注册名称
    name: service-gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true # 开启从注册中心动态创建路由的功能,利用微服务名称进行路由
      routes:
        - id: service-provider-getNumber # 路由的id,没有规定规则但要求唯一,建议配合服务名
          #匹配后提供服务的路由地址
#          uri: http://localhost:8001
          uri: lb://service-provider #匹配后提供服务的路由地址
          predicates:
            - Path=/provider/getNumber/** # 断言,路径相匹配的进行路由(注意**为通配符)
        - id: service-provider-getInfo
#          uri: http://localhost:8001
          uri: lb://service-provider #匹配后提供服务的路由地址
          predicates:
            - Path=/provider/getInfo  #断言,路径相匹配的进行路由
#            - After=2020-10-30T15:00:22.432+08:00[Asia/Shanghai] #在该时区后发生
#            - Before=2020-10-30T16:00:22.432+08:00[Asia/Shanghai] #在该时区前发生
#            - Between=2020-10-30T15:00:22.432+08:00[Asia/Shanghai],2020-10-30T16:00:22.432+08:00[Asia/Shanghai] #在两个时区内发生
#            - Cookie=username,lisi #携带cookies信息,相当于键值对,username为key,lisi为value
#            - Cookie=username,\d+ #携带cookies信息,相当于键值对,username为key,\d+为value,是一个正则表达式,表达为正数
#            - Header=id,001 #携带header信息,相当于键值对,id为key,001为value
#            - Header=id,\d+ #携带header信息,相当于键值对,id为key,\d+为value,是一个正则表达式,表达为正数
#            - Host=**.somehost.org,**.anotherhost.org #host匹配,**为通配符
#            - Method=GET,POST #允许的请求方法
#            - Query=number,abc #带查询条件,第一个是查询参数,第二个是可选的值
#            - Query=number,\d+ #带查询条件,第一个是查询参数,第二个是可选的正则表达式
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

2.服务提供端8001控制器代码如下:

在这里插入图片描述
3.curl是什么?

在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,http请求指的是客户端向服务端的请求消息,http请求主要分为get或post请求两种,在linux测试环境中,可以通过curl或wget命令和模拟http请求。通俗的来说就是类似于postman接口工具一样能够发送接口请求。

二。predicates的九种常用配置方式

1.-Path

path是断言最常见的方式,它主要是通过路径来控制是否通过并进行路由访问。

application.xml配置图如下:

在这里插入图片描述
启动服务并通过curl访问,符合路径规则成功访问,否则访问失败:

在这里插入图片描述

2.-After:

after后跟的是一个时区时间,表示的是当前系统时间要在该时区时间后,才能通过并进行路由访问。

我们先建立一个输出当前时区时间的测试类:

public class test {

    public static void main(String[] args) {
        ZonedDateTime zonedDateTime=ZonedDateTime.now();
        //输出时区时间
        System.out.println(zonedDateTime);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输出如下:

在这里插入图片描述
所以我们在application.yml文件中配置如下:

在这里插入图片描述
启动服务并通过curl访问,符合要求访问成功:

在这里插入图片描述

3.-Before:

before和after一样,后面跟的也是一个时区时间,表示的是当前系统时间要在该时区时间前,才能通过并进行路由访问。

application.yml文件中配置如下:

在这里插入图片描述
启动服务并通过curl访问,符合要求访问成功:

在这里插入图片描述

4.-Between:

between后面跟的也是时区时间,但是参数为两个,第一个参数为更早一点的时间,第二个参数为更晚一点的时间,中间用逗号隔开,表示的是当前系统时间要在这两个时区时间内,才能通过并进行路由访问。

application.yml文件中配置如下:

在这里插入图片描述
启动服务并通过curl访问,符合要求访问成功:

在这里插入图片描述

5.-Cookie:

带cookie信息,后面跟两个参数,相当于键值对,第一个参数为key,第二个参数为value,第二个参数可以是字符串或者是正则表达式。

当value为字符串时,application.yml文件中配置如下:

在这里插入图片描述
启动服务并通过curl访问,带有cookie信息username=lisi成功访问,否则访问失败:

在这里插入图片描述
当value为正则表达式时,application.yml文件中配置如下:

在这里插入图片描述
启动服务并通过curl访问,带有cookie信息username的值为正数成功访问,否则访问失败:

在这里插入图片描述

6.-Header:

带header头信息,后面跟两个参数,相当于键值对,第一个参数为key,第二个参数为value,第二个参数可以是字符串或者是正则表达式。

当value为字符串时,application.yml文件中配置如下:

在这里插入图片描述
启动服务并通过curl访问,带有header信息id:001成功访问,否则访问失败:

在这里插入图片描述

当value为正则表达式时,application.yml文件中配置如下:

在这里插入图片描述
启动服务并通过curl访问,带有header信息id为正数成功访问,否则访问失败:

在这里插入图片描述

7.-Host:

带host信息,参数为主机地址,可带多个参数,中间用逗号隔开,若匹配才能通过并进行路由访问。

application.yml文件中配置如下:

在这里插入图片描述
启动服务并通过curl访问,符合host主机地址匹配的成功访问,否则访问失败:

在这里插入图片描述

8.-Method:

规定请求方式,参数为请求方式,可带多个请求方式,中间用逗号隔开。

application.yml文件中配置如下:

在这里插入图片描述

启动服务并通过curl访问,符合规定的请求方式访问成功,否则访问失败:

在这里插入图片描述

9.-Query:

带查询条件,后面跟一个或者两个参数,参数为两个时相当于键值对,第一个参数为key,第二个参数为value,第二个参数可以是字符串或者是正则表达式。

当value为字符串时,application.yml文件中配置如下:

在这里插入图片描述

启动服务并通过curl访问,符合查询条件number=abc则访问成功,否则访问失败:

在这里插入图片描述

当value为正则表达式时,application.yml文件中配置如下:

在这里插入图片描述

启动服务并通过curl访问,符合查询条件number为正数则访问成功,否则访问失败:

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/302074
推荐阅读
相关标签
  

闽ICP备14008679号