• Java Spring Cloud VII 之 内置断言


    Java Spring Cloud VII 之 内置断言

    断言

    内置断言

    断言就是判断一个条件,如果条件满足就执行某个操作

    predicates就是断言的意思

    我们前面章节使用的Path就是内置断言中的一种,指访问的路径是否满足条件

    除了路径断言之外,还有很多内置断言常见的内置断言列表

    • after
    • before
    • between
    • cookie
    • header
    • host
    • method
    • path
    • query
    • remoteaddr

    时间相关

    after,before,between

    在指定时间之后,之前或之间

    判断是否满足时间条件,如果满足才允许访问

    我们先使用下面代码获得当前包含时区的系统时间表

    ZonedDateTime.now()
    
    • 1

    使用After设置必须在指定时间之后访问

    - id: gateway-shanghai
      uri: lb://shanghai
      predicates:
        - Path=/sh/**
        - After=2022-06-24T15:30:30.999+08:00[Asia/Shanghai]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    使用Before设置必须在指定时间之后访问

    - id: gateway-shanghai
      uri: lb://shanghai
      predicates:
        - Path=/sh/**
        - Before=2022-06-24T15:34:00.999+08:00[Asia/Shanghai]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    使用Between设置必须在指定时间之间访问

    - id: gateway-shanghai
      uri: lb://shanghai
      predicates:
        - Path=/sh/**
        - Between=2022-06-24T15:34:00.999+08:00[Asia/Shanghai],2022-06-24T15:36:20.999+08:00[Asia/Shanghai]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    要求指定参数

    Query断言,要求必须包含指定的参数才能访问资源

    - id: gateway-shanghai
      uri: lb://shanghai
      predicates:
        - Path=/sh/**
        - Query=name
    
    • 1
    • 2
    • 3
    • 4
    • 5

    内置过滤器

    Gateway还提供的内置过滤器

    不要和我们学习的filter混淆

    内置过滤器允许我们在路由请求到目标资源的同时,对这个请求进行一些加工或处理

    下面我们使用AddRequestParameter过滤器,想请求中添加参数

    - id: gateway-shanghai
      uri: lb://shanghai
      predicates:
        - Path=/sh/**
        - Query=name
      filters:
        - AddRequestParameter=age,80
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    shanghai项目的控制器接收这个参数

    @GetMapping("/show")
    public String show(String name,Integer age){
        return "这里是上海!"+name+","+age;
    }
    
    • 1
    • 2
    • 3
    • 4

    重启网关和shanghai项目

    例如输入如下路径

    http://localhost:9000/sh/show?name=tom

    因为过滤器的存在,控制可以获取网关过滤器添加的参数值
    请添加图片描述
    其他内置过滤器和自定义过滤器的使用,同学们可以查阅相关文档自己了解

    我是将军;我一直都在,。!

  • 相关阅读:
    dnan的好处2
    MySQL基础知识复习3(数据库的备份和还原、外键的建立、储存过程练习题)
    用一个例子理解拉格朗日乘数法解决等式约束优化问题
    蓝屏page_fault_in_nonpaged_area的解决办法
    并发中级(第二篇)
    MyBatisPlus(五)配置表名前缀:table-prefix
    mac上配置maven
    谷歌与荣耀恢复合作:荣耀50系列海外新机获GMS授权
    机器学习案例之客户的信用风险与预测
    【开源】新生报到网站 JAVA+Vue.js+SpringBoot+MySQL
  • 原文地址:https://blog.csdn.net/letterljhx/article/details/126922050