首页 > 其他分享 >gateway 使用细节

gateway 使用细节

时间:2024-07-15 22:07:38浏览次数:14  
标签:00 uri predicates 细节 使用 test Path my gateway

spring:
  cloud:
    gateway:
      routes:
        - id: test_my_provider # 自定义,全局唯一即可
          uri: http://localhost:8081 # 实际调用的地址
          predicates:
            - Path=/test/** # 请求匹配规则
        - id: test_my_consumer
          uri: http://localhost:8082
          predicates:
            - Path=/feign/**

上一篇文章 gateway 快速入门的配置文件如上,uri 中 ip 和 port 写死的,请求最终会到具体的某个节点,如果多节点部署,直接G

多节点 uri

8081 对应服务是 my-test-provider,8082 对应的服务是 my-test-consumer,如下改动即可

- id: test_my_provider 
  uri: lb://my-test-provider # 服务名代替 ip+port
  predicates:
    - Path=/test/**
- id: test_my_consumer
  uri: lb://my-test-consumer # 服务名代替 ip+port
  predicates:
    - Path=/feign/**

predicates 更多用法

前面 predicates 只是配了一个 Path,表示匹配 url,还能增加判断规则,即使能找到 url,也要满足条件才能调用,默认的有 12 种

  1. 时间判断

    1. BeforeRoutePredicateFactory、AfterRoutePredicateFactory、BetweenRoutePredicateFactory

    2. 指定时间之前、指定时间之后、时间范围内(如果是范围英文逗号分隔,start,end)

    3. 值是 ZonedDateTime 决定的

      public static void main(String[] args) {
          System.out.println(ZonedDateTime.now());
      }
      
      // 2024-07-15T21:41:48.868923400+08:00[Asia/Shanghai]
      
    4. 比如电商系统某个商品限时抢购,2024-07-13 一整天

      - id: flash-sale-promotion 
        uri: lb://my-test-provider # 服务名代替 ip+port
        predicates:
          - Path=/onsale/**
          - Between=2024-07-13T00:00:00+08:00[Asia/Shanghai],2024-07-14T00:00:00+08:00[Asia/Shanghai]
      
  2. cookie 判断

    - id: flash-sale-promotion 
      uri: lb://my-test-provider # 服务名代替 ip+port
      predicates:
        - Path=/onsale/**
        - Between=2024-07-13T00:00:00+08:00[Asia/Shanghai],2024-07-14T00:00:00+08:00[Asia/Shanghai]
        - Cookie=username,zhangsan # 请求中必须有 username = zhangsan 的 cookie,后面其实是个政策表达式
    
  3. header 请求头判断

    - id: flash-sale-promotion 
      uri: lb://my-test-provider # 服务名代替 ip+port
      predicates:
        - Path=/onsale/**
        - Between=2024-07-13T00:00:00+08:00[Asia/Shanghai],2024-07-14T00:00:00+08:00[Asia/Shanghai]
        - Cookie=username,zhangsan
        - Header=userage,\d+ # 请求头必须有 userage,并且值是正整数
    
  4. Path,前面用了很多了,就是通过 url 判断是否符合

  5. Query,请求必须带有某个 QueryString 才可以(get 请求?xx=xx&xx=xx)

  6. RemoteAddr,IP 限制,符合的 IP 才能访问

  7. Method,请求方式限制,只能符合的才能访问,GET、POST、PUT ...

自定义判断规则

标签:00,uri,predicates,细节,使用,test,Path,my,gateway
From: https://www.cnblogs.com/cyrushuang/p/18297230

相关文章

  • Elastic Search使用ik分词器测试分词效果实现------Elastic Search
    POST_analyze{"analyzer":"ik_max_word","text":"一刀999是兄弟就来砍我"}POST_analyze{ "analyzer":"ik_max_word", "text":"一刀999是兄弟就来砍我"}{"tokens":[......
  • Vue 3 中 defineExpose() 函数的使用
    什么是defineExpose()?defineExpose()是Vue3提供的一个CompositionAPI函数,用于明确指定哪些内部响应式状态或函数可以被外部访问。如何使用defineExpose()?在子组件中定义:import{ref,defineExpose}from'vue'exportdefault{setup(){constcount=......
  • VannaAI 介绍及使用 - 第三篇
    Vanna的多样化使用前言前面两篇,对Vanna的一些原理和基本使用进行的总结,本篇将根据Vanna提供的多样化配置进行体验尝试,并共同来探索一下Vanna源码,有不正之处请友友们指正。先做一些说明:1.我本地目前使用的是 python3.12版本,Vanna是0.5.5版本,不同版本的包可能源码会有些许......
  • Python 安装使用图片裁剪脚本
    Sure!Here’saquickguidetoinstallingPythononWindows11:###Step1:DownloadPython1.GototheofficialPythonwebsite:[python.org](https://www.python.org/downloads/)2.Clickthe"DownloadPython"button.Thiswilldownloadthelatestv......
  • 关于使用自定义按键的探索和实现
    目前游戏中大都支持自定义按键,在设置页面中,为了给玩家一个舒适或者更有空间的操作方式,我对在ue4中自定义按键输入的实现进行探索,当然ue4和ue5版本差别不大可以说大同小异。对于自定义按键,比如玩家开枪,跳跃翻滚,本来使用q,we,来完成,但是我们在设置中可以改变他的按键,所以初步实现......
  • 使用GSAP制作动画视频
    GSAP3Blue1Brown给我留下了深刻印象。利用动画制作视频,内容简洁,演示清晰。前两天刚好碰到一件事,我就顺便学习了一下怎么用代码做动画。以javascrip为例,有两个动画引擎,GSAP和Animajs。由于网速的原因,询问了GPT后,我选择了GSAP来制作我的第一个动画视频。制作动画视频不同于动画,要......
  • log4cpp的安装及使用
    目录前言安装使用示例代码配置文件编译链接输出前言本文的操作均在ubuntu20.04下进行安装本文仅介绍从源码编译安装log4cpp的过程。①在开始编译前,首先要确保系统中安装了g++,make,autoconf和libtool②下载log4cpp源码下载log4cpp的特定版本并解压,以1.1.3为例:wgethttp://so......
  • Vue3中,使用TSX/JSX编写的父组件,如何向子组件中传递具名插槽(slot)的内容
    子组件(Child)-模板代码:<template><divclass="child-component"><divclass="header-box"><slotname="header"></slot></div><slot></slot></div></tem......
  • Windows下C++动态链接库的生成以及使用
    目录一.前言二.生成动态链接库三.使用动态链接库四.其他一.前言这篇文章简单讨论一下Windows下如何使用VS生成和使用C++动态链接库,示例使用VS2022环境。二.生成动态链接库先创建C++项目-动态链接库(DLL)然后将默认生成的.h和.cpp文件清理干净,当然你也可以选择保......
  • 如何使用阿里云镜像加速
    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top官方地址Ubuntu针对Docker客户端版本大于1.10.0的用户您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器sudomkdir-p/etc/dockersudotee/etc/dock......