springcloud-GateWay的Filter
由于官方提供的路由过滤器太多,只能自己去查;下面是使用官方过滤器的用法:
在实际开发中,用自己自定义的过滤器比较多;比如下面作为参考:
@Component public class MyGlobalFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { String username = exchange.getRequest().getQueryParams().getFirst("username"); if(username == null){ exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE); return exchange.getResponse().setComplete(); } return chain.filter(exchange); //放行执行下一个过滤器,并把exchange交给下一个过滤器 } @Override public int getOrder() { return 0; } }
是实现一个全局的路由过滤器,需要实现两个接口:GlobalFilter, Ordered,然后覆盖两个方法:
1. filter():当拦截请求时会执行的方法,跟之前的doFilter一样;但是参数和返回值就比较新颖了,是spring5后才提供的
> ServerWebExchange:封装了request,response,session以及其他信息,简单的说就是请求常用相关的对象和数据的封装吧
> Mono<T>:这个有点类似于 统一返回结果的类或接口,作用就是为了统一返回值的类型。
2. getOrder():该方法是用来确定 过滤器 的执行顺序的,当返回值越小, 则过滤器的执行顺序越优先。
总结:一般在开发中,自定义全局路由过滤器会比较多,通常在过滤器里面做 日志记录 和 鉴权 会更多点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~