基于SpringCloud GateWay 3.1.2 版本

  • 内置过滤器

    Spring Cloud GateWay 内置了下图中的过滤器,具体的内置过滤器如何使用,可参考官网文档,描述都很简单,本文重点在自定义过滤器的使用中

  • 自定义过滤器

官网文档地址:点击打开

创建自定义过滤器类,实现GlobalFilter, Ordered。并实现filter、getOrder两个方法。

getOrder方法返回 【-2147483648~2147483647】范围内的一个整数,数值越小优先级越高,越先执行。

filter方法,则是我们这个过滤器要处理的业务逻辑。该方法有两个参数ServerWebExchange exchange, GatewayFilterChain chain。

ServerWebExchange接口中主要是获取当前请求的request、response、attributes

通过exchange.getRequest()方法,可获取到请求发送的一些参数等信息。

通过exchange.getResponse()方法,可对当前请求进行处理,根据具体的业务逻辑调用是否直接返回某些信息。

通过chain.filter(exchange)方法,对当前请求进行放行。


/*** @author songzerong* @desc 自定义GateWay过滤器 DemoFilter*/
@Component
@Slf4j
public class DemoFilter implements GlobalFilter, Ordered {@SneakyThrows@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {log.info("demo global filter");String str = exchange.getRequest().getQueryParams().getFirst("str");if (null == str) {// 若请求参数为null,则返回一个状态码,前台处理,否则继续执行后续的操作ServerHttpResponse response = exchange.getResponse();boolean b = response.setStatusCode(HttpStatus.METHOD_NOT_ALLOWED);if (b) {return exchange.getResponse().setComplete();} else {throw new Exception("设置状态码出错");}}return chain.filter(exchange);}@Overridepublic int getOrder() {return -1;}
}

若请求地址不带请求参数,则进入filter会直接返回405错误码。

若请求地址带请求参数,则进入filter则会放行,并继续执行后续处理逻辑。

将自定义过滤器加入Spring容器,有两种方式一种是直接在过滤器类中添加@Component注解,另一种是官方文档中写的,通过添加@Bean注解的形式进行注入使用。


/*** @author songzerong* @desc 自定义GateWay过滤器 DemoFilter*/
@Slf4j
public class DemoFilter implements GlobalFilter, Ordered {@Beanpublic GlobalFilter demoFilter(){return new DemoFilter();}@SneakyThrows@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {log.info("demo global filter");String str = exchange.getRequest().getQueryParams().getFirst("str");if (null == str) {// 若请求参数为null,则返回一个状态码,前台处理,否则继续执行后续的操作ServerHttpResponse response = exchange.getResponse();boolean b = response.setStatusCode(HttpStatus.METHOD_NOT_ALLOWED);if (b) {return exchange.getResponse().setComplete();} else {throw new Exception("设置状态码出错");}}return chain.filter(exchange);}@Overridepublic int getOrder() {return -1;}
}

至此,自定义过滤器添加完成。

Spring Cloud GateWay——Filter过滤器相关推荐

  1. Spring Cloud Gateway(过滤器)

    在上一篇文章中,我们了解了 Spring Cloud Gateway 作为网关所具备的基础功能:路由.本篇我们将关注它的另一个功能:过滤器. Spring Cloud Gateway 已经内置了很多实 ...

  2. Spring Cloud Gateway(一)为什么用网关、能做什么、为什么选择Gateway、谓词工厂、过滤器配置

    1.为什么用网关?能做什么?为什么选择Gateway? 1.1.为什么用网关 网关api:封装了系统内部架构,为每个客户端提供一个定制的 API.在微服务架构中,服务网关的核心要点是,所有的客户端和消 ...

  3. Spring Cloud Gateway(十):网关过滤器工厂 GatewayFilterFactory

    本文基于 spring cloud gateway 2.0.1 1.GatewayFilterFactory 简介 路由过滤器允许以某种方式修改传入的HTTP请求或传出的HTTP响应. 路径过滤器的范 ...

  4. Spring Cloud Gateway 入门

    认识 Spring Cloud Gateway Spring Cloud Gateway 是一款基于 Spring 5,Project Reactor 以及 Spring Boot 2 构建的 API ...

  5. Spring Cloud Gateway(限流)

    在高并发的应用中,限流是一个绕不开的话题.限流可以保障我们的 API 服务对所有用户的可用性,也可以防止网络攻击. 一般开发高并发系统常见的限流有:限制总并发数(比如数据库连接池.线程池).限制瞬时并 ...

  6. Spring Cloud Gateway介绍(二)

    Spring Cloud Gateway介绍(一) 全局Filters GlobalFilter与GatewayFilter具有一样的接口. 这些全局过滤器都有对应的配置类,例如: org.sprin ...

  7. Spring Cloud Gateway介绍(一)

    特性 基于 Java 8 编码 基于 Spring Framework 5 + Project Reactor + Spring Boot 2.0 构建 支持动态路由,能够匹配任何请求属性上的路由 支 ...

  8. 网关Spring Cloud Gateway科普

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"获取公众号专属群聊入口 欢迎跳转到本文的原文链接:https://honeypp ...

  9. Spring Cloud Gateway一次请求调用源码解析

    简介: 最近通过深入学习Spring Cloud Gateway发现这个框架的架构设计非常简单.有效,很多组件的设计都非常值得学习,本文就Spring Cloud Gateway做一个简单的介绍,以及 ...

最新文章

  1. 基于 Express 与 Mongodb 的简易 实现一个多人 blog
  2. 玩转VSCode插件之Remote-SSH
  3. leetcode 小青蛙跳梯子
  4. windows ternimal 使用
  5. ffmpeg 怎么用
  6. 知识图谱最新权威综述论文解读:实体发现
  7. 介绍两款WordPress文章转移插件
  8. Docker快速部署PostgreSQL服务
  9. Java指定几个标点符号(或分割)分割字符
  10. hprose java 下载_Hprose Java|Hprose For Java下载v2017.2.0官方版 附使用教程 - 欧普软件下载...
  11. 长沙湘江科技学校计算机信息,长沙湘江科技中等职业学校简介|长沙湘江科技中等职业学校介绍...
  12. java遍历jsonarray数组_java-JSON-遍历JSONArray
  13. Yandex插件使用说明——Slager_Z
  14. linux虚拟文件系统(二)-ext4文件系统结构
  15. 阿里部署edas,采用hsf框架,启动项目时无法启动的问题。
  16. linux内核无锁cas,无锁编程以及CAS
  17. 开滦二中2021高考成绩查询,成人成才 无缝严管丨开滦二中西校区2018高考总结交流大会...
  18. CSS3动画(动画已丢,看原文)
  19. 安徽大学计算机复试刷人比例,658人进复试刷掉564多人!盘点21复试比奇高、刷人狠的院校专业...
  20. 文本识别综述 <软件学报_王建新等、中国图象图形学报_刘崇宇等>

热门文章

  1. 如何装双系统 win10 linux,Win10下安装CentOS 7双系统详解
  2. 小姐姐一键素描,词云生成。
  3. [python-flask笔记1]python加载配置的五种方式
  4. 在cmd中切换到指定目录
  5. librosa | 系统实战(五~十七)
  6. 大数据系列之数据仓库Hive原理
  7. speeding up your web site 前端性能优化
  8. Kotlin 使用高阶函数实现回调
  9. linux查看wwn号 工具,Linux下如何查看服务器WWN号
  10. 十进制和26进制转换算法