SpringCloud微服务中gateway网关的使用(三)——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+ #带查询条件,第一个是查询参数,第二个是可选的正则表达式

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);
    }
}

输出如下:

在这里插入图片描述
所以我们在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为正数则访问成功,否则访问失败:

在这里插入图片描述

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Keson Z

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

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

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

打赏作者

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

抵扣说明:

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

余额充值