首页 理论教育 Java服务端研发知识图谱:Filter基本使用

Java服务端研发知识图谱:Filter基本使用

时间:2023-11-22 理论教育 版权反馈
【摘要】:可以通过自定义Filter来实现在Zuul网关上的请求拦截与过滤。下面介绍Filter的使用方法。Filter简单实现在Zuul工程中创建一个CommonFilter类,这个类实现如下。表9-2 ZuulFilter抽象方法在上面的例子中,在run方法中验证了请求头中是否包含version和clienttype这两个数据项,如果不包含则验证不通过;方法中使用ctx.set在上下文中存放了一个数据,可以使用这种方法传递Filter之间的数据。

Java服务端研发知识图谱:Filter基本使用

可以通过自定义Filter来实现在Zuul网关上的请求拦截与过滤。在同一个Zuul服务中,可以定义多个Filter,多个Filter根据分类和优先级的定义有序执行,这种有序的关系也便于把一些通用并且简单的过滤器放到前面,如果这个过滤器验证不通过,后面的过滤器通过检测上一个过滤器的状态选择性执行,从而节省服务器开销。下面介绍Filter的使用方法。

(1)Filter简单实现

在Zuul工程中创建一个CommonFilter类,这个类实现如下。

978-7-111-61011-3-Part02-334.jpg

978-7-111-61011-3-Part02-335.jpg

(2)方法含义

CommonFilter继承自ZuulFilter抽象类,并且实现了4个抽象方法,其含义见表9-2。

9-2 ZuulFilter抽象方法

978-7-111-61011-3-Part02-336.jpg(www.xing528.com)

在上面的例子中,在run方法中验证了请求头中是否包含version和clienttype这两个数据项,如果不包含则验证不通过;方法中使用ctx.set("isFilterSuccess",boolean)在上下文中存放了一个数据,可以使用这种方法传递Filter之间的数据。

(3)实际效果演示

如果不添加version和clienttype这两个数据项,则不能验证通过,效果如图9-26所示。

978-7-111-61011-3-Part02-337.jpg

图9-26 不带Header参数的请求

添加Header信息后,可以正确返回数据,如图9-27所示。

978-7-111-61011-3-Part02-338.jpg

图9-27 带Header参数的请求

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈