美文网首页
GateWay常见的Predicate

GateWay常见的Predicate

作者: CodeYang | 来源:发表于2021-09-04 00:27 被阅读0次

官方配置文档地址

一、设置断言

  1. 修改application.yml文件
server:
  port: 9527
spring:
  application:
    name: cloud-gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true    #开启从注册中心动态创建路由的功能,利用服务名进行路由
      routes:
        - id: provider_routh               #路由ID,没有固定规则但是要求唯一,建议配合服务名
          #uri: http://localhost:8001      #匹配后提供服务的路由地址
          uri: lb://CLOUD-PROVIDER         #lb://设置服务名
          predicates:
            - Path=/provider/hystrix/**    #断言:路径相匹配进行路由

        - id: provider_routh2              #路由ID,没有固定规则但是要求唯一,建议配合服务名
          #uri: http://localhost:8001      #匹配后提供服务的路由地址
          uri: lb://CLOUD-PROVIDER         #lb://设置服务名
          predicates:
            - Path=/provider/hello/**      #断言:路径相匹配进行路由
            - Before=2021-08-25T12:53:46.101+08:00[Asia/Shanghai] #匹配这个时间之前的请求
            - After=2021-08-25T12:53:46.101+08:00[Asia/Shanghai]  #匹配这个时间之后的请求
            - Between=2021-08-25T12:53:46.101+08:00[Asia/Shanghai],2021-09-25T12:53:46.101+08:00[Asia/Shanghai] #匹配这个两个时间的请求
            - Cookie=username,zzyy
            - Header=X-Request-Id,\d+  #请求头要有 X-Request-Id 属性并且值为整数的正则表达式
            - Host=**.atguigu.com
            - Method=GET  #请求方式是 GET
            - Query=username,\d+ #要有参数名 username 并且值还要是证书才能路由
  1. 获取指定格式的时间
    public static void main(String[] args) {
        ZonedDateTime zonedDateTime = ZonedDateTime.now();
        System.out.println(zonedDateTime);
    }
运行结果.png

二、我们注释其他的断言,测试 - Query=username,\d+

  1. 不加参数,进行调用,调用失败


    不加参数.png
  2. 添加username参数,值是字符串,进行调用,调用失败


    添加username参数,值是字符串.png
  3. 添加username参数,值是整数,进行调用,调用成功


    添加username参数,值是整数.png

相关文章

网友评论

      本文标题:GateWay常见的Predicate

      本文链接:https://www.haomeiwen.com/subject/apxjiltx.html