Spring Cloud Gateway 路由转发之After(Before)路由断言工厂使用

前言


本文旨在介绍After(Before)路由断言工厂使用,以此类推可以使用其他路由断言工厂

案例


1、概念

网关简单的说就是提供一个对外统一的API入口和出口,统管企业对外的所有API出口。一般来说,网关对外暴露的URL或者接口信息,
我们统称之为路由信息。如果研发过网关中间件,或者使用或了解过ZUUL的,网关的核心肯定是Filter以及FilterChain(Filter责任链)。
Spring Cloud Gateway也具有路由信息和Filter。下面介绍一下Spring Cloud gateway中最重要的几个概念---引用自http://xujin.org/sc/gw/gw04/
复制代码
路由(route):路由是网关最基础的部分,路由信息由一个ID、一个目的url、一组断言工厂和一组Filter组成。如果路由断言工厂为真,则说明请求的Url和配置的路由匹配。
复制代码
断言(Predicate): java 8中的断言函数。Spring Cloud Gateway中的断言函数输入类型是Spring 5.0框架中的ServerWebExchange。Spring Cloud Gateway中的断言函数允许开发者去定义匹配来自于http request中的任何信息,比如请求头和参数等。
复制代码
过滤器(filter):一个标准的Spring webFilter。Spring Cloud Gateway中的Filter分为两种类型的Filter,分别是Gateway Filter和Global Filter.网关 Filter实例是由Spring 框架中的网关Filter的特殊工厂构造。request在转发到目前服务之前,response在返回到调用端之前都可以被修改或者自定义。
复制代码

2、什么是After(Before)路由断言?
Before路由断言工厂带有一个UTC时间格式的时间参数,当请求进来的当前时间在路由断言工厂之前会成功匹配,否则不能成功匹配。
After路由断言工厂带有一个UTC时间格式的时间参数,当请求进来的当前时间在路由断言工厂之后会成功匹配,否则不能成功匹配。

3、案例
在Spring Cloud Gateway 路由转发案例基础上修改application.yml文件中断言配置

server:port: 9001
spring:application:name: service-agatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848#将此服务设置为网关gateway:discovery:locator:enabled: trueroutes:#路由名称- id: consumer_route#跳转路由uri: http://www.scnunanshen.online/#断言,设置拦截条件predicates:- After=2018-03-18T17:32:58.129+08:00[Asia/Shanghai]        #此处为After断言工厂,表示在该时间之后的请求都将跳转到uri
复制代码

4、其他断言工厂

  • 通过Cookie信息配置
  • 通过Header属性匹配
  • 通过Host主机匹配
  • 通过请求方式匹配
  • 通过请求参数匹配
  • 以上方式组合使用

示例:参数匹配方式

server:port: 9001
spring:application:name: service-agatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848#将此服务设置为网关gateway:discovery:locator:enabled: trueroutes:#路由名称- id: consumer_route#跳转路由uri: http://www.scnunanshen.online/#断言,设置拦截条件predicates:- Query=nan#此处表示设置当访问url中存在nan属性时,路由才会匹配
#http://localhost:9001/aa?nan=1访问 ,断言为真路由匹配。#也可以同时设置属性跟值如:- Query=nan,2
#当路由匹配nan=2时,才会被拦截
复制代码

转载于:https://juejin.im/post/5c87704de51d4539d9565ddc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis服务器学习一

一:什么是redis服务器 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支…

RichTextBox 改变每行的字体颜色

RichTextBox 改变每行的字体颜色 1、新建方法AppendTextColorful(this RichTextBox rtBox, string text, Color color, bool addNewLine) 2、调用方法AppendTextColorful(this RichTextBox rtBox, string text, Color color, bool addNewLine) public stat…

Android使用token维持登陆状态的方法

什么是token token(令牌)是一串唯一的字符串,通常由服务端生成,在注册完成时返回给客户端,用来标识此用户,客户端将此字符串存储在本地。在以后的网络请求时,客户端先查询本地的token&#xff0…

阿里云RPA专有云产品文档集合

请访问以下链接: https://www.yuque.com/aliyun_rpa/

利用相机SDK采相转换至HImage

来源于http://blog.sina.com.cn/s/blog_d40acd530102xndm.html Halcon采相功能非常强大,基本支持各大品牌以及各个通信接口的相机,并且Halcon提供为相机厂商提供了制作Halcon相机接口库的办法,总之Halcon基本可以直接连接所有工业相机。 但…

java项目启动tomcat没报错,然后页面报404无法找到,重新编译后,出现以下状态...

严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerorg.springframework.beans.factory.BeanCreationException: Error creating bean with name MapperScannerConfigurer defined in c…

3.12PMP试题每日一题

哪一个是组织过程资产的事例:A、项目管理信息系统B、配置管理姿势库C、配置管理系统D、共享系统和云计算 作者:Tracy19890201(同微信号)转载于:https://blog.51cto.com/13554215/2361982

相机与镜头常识

1.焦距(FocalLength)   焦距是从镜头的中心点到胶平面上所形成的清晰影像之间的距离。焦距的大小决定着视角的大小,焦距数值小,视角大,所观察的范围也大;焦距数值大,视角小,观察范…

vsftpd的安装

简介 vsftpd是一个免费的开源的ftp服务器软件; 特点 小巧轻快,安全易用,支持虚拟用户、支持带宽限制等功能; 安装 执行 yum -y install vsftpd 创建虚拟用户(注意权限问题(chmod),这个要根据情况来定) 选择在根或用户目…

halcon模板匹配测试流程

*1、创建模板(获取要做模板区域的图像) *create_shape_model (ImageReduced, 4, 0, rad(360), rad(1), none, use_polarity, 30, 10, ModelID) *2、获取形状模型---第二步(为了显示找的的模板) *get_shape_model_contours (…

企业云存储:为什么中大型企业偏爱自建私有云?

“上云?我们通常自建企业私有云。”9102年了,在云存储服务的选择上,中大型企业基本步调一致,统筹规划自建企业私有云。为什么中大型企业都偏爱自建企业私有云?一、长久的成本考量从账面上看,通常私有云初期…

ETL作业调度软件TASKCTL自定义扩展作业类型插件安装

TASKCTL批量自动化调度作业类型扩展插件的安装方法如下几种: 1、 直接覆盖法 直接覆盖法的意思就是将自定义扩展好的插件,通常是一个shell脚本,上传至后台调度核心服务上,然后修改后台任务类型的XML元素配置文件即可。 注意&#…

递归就这么简单

递归介绍 本来预算此章节是继续写快速排序的,然而编写快速排序往往是递归来写的,并且递归可能不是那么好理解,于是就有了这篇文章。 在上面提到了递归这么一个词,递归在程序语言中简单的理解是:方法自己调用自己 递归其…

阿里云RPA(机器人流程自动化)干货系列之二:认识RPA(下)

2019独角兽企业重金招聘Python工程师标准>>> 导读:本文是阿里云RPA(机器人流程自动化)干货系列之二,主要介绍了RPA的发展齐纳经和主要使用场景有哪些,目前国内外主流的RPA厂商以及RPA的未来在哪。 一、RPA的…

C# 图片的读取

//图片转成二进制public byte[] GetPictureData(string imagepath){/**/根据图片文件的路径使用文件流打开,并保存为byte[] FileStream FileStream new FileStream(imagepath, FileMode.Open);byte[] byData new byte[FileStream.Length];FileStream.Read(byData,…

SDOI2010 地精部落

题目描述 传说很久以前,大地上居住着一种神秘的生物:地精。 地精喜欢住在连绵不绝的山脉中。具体地说,一座长度为N的山脉H可分为从左到右的N段,每段有一个[b][u]独一无二[/u][/b]的高度Hi,其中Hi是1到N之间的正整数。 …

Codechef Yet another cute girl

题意大概就是让你求一下[L,R]中的约数个数是素数的数的个数。 其中1<L<R<1e12,R-L<1e6. 然后我写了两种做法&#xff0c;第一种是可以直接搞出来L-R的约数个数&#xff0c;然后直接统计一下就好了。 这个的复杂度大致是 O((R-L) * log(R-L)) 第二种就是需要先发现满…

简单弄一个-个人主页

--- 整理一下已经发表的文章 JAVA基础 java基础数据结构之-红黑树(插入)java基础数据结构之-红黑树(删除)了解一下jdk动态代理的本质了解一下cglib动态代理的本质SpringBoot源码解析 前言&#xff1a;阅读springboot源码之前&#xff0c;最好对spring源码有一定的了解&#xff…

Halocn OCR识别入门学习

一、建立OCR库 dev_close_window() read_image(Image,OCR) get_image_size(Image,Width,Hight) dev_open_window(0,0,Width,Hight,black,Window) dev_display(Image)*字符处理 rgb1_to_gray(Image,ImageGray) *鼠标画你要找的roi区域 draw_rectangle1(Window,Row1,Column1,Row…

ctsc2009 移民站选址

分析&#xff1a;非常非常好的一道题&#xff01; 首先需要对问题进行转化&#xff1a; 行列无关&#xff0c;对于行单独处理&#xff0c;对于列单独处理必然存在一个最优方案使得每一个新站与旧站重合.转化1很显然&#xff0c;对于转化2&#xff0c;是一类非常经典的“中位数问…