SpringCloud-Gateway的请求头部自定义实践
在微服务框架中,SpringCloud-Gateway的方式几乎是首选。也得益于Reactor的实现,使得SpringCloud-Gateway的性能在所有的网关平台中脱颖而出。在一次项目实践中,需要自定义请求的头部信息,故来了一趟学习之旅。
一个请求在网关中的执行顺序是经过一系列的过滤器链进行链式调用并执行的。SpringCloud-Gateway中的过滤器又分为全局过滤器(GlobalFilter)和网关过滤器(XXXGatewayFilterFactory)又称路由过滤器,对于链式调用过滤器执行顺序见下图:
上图列出了SpringCloud-Gateway中框架带的过滤器及其优先级,其值越小,优先级越高。全局过滤器位置比较灵活,通过控制优先级,可以指定具体的执行顺序;但是,网关过滤器的执行顺序是有限制的,它的优先级范围在大于0且小于10150(这个版本依赖于框架版本,该值出自spring-cloud-starter-gateway-3.1.3),就算程序中优先级强制指定其他范围,也不会生效。注意,框架自带的过滤器的优先级也改变不了,或者不能被覆盖,强行指定优先级也会不生效的。另外,过滤器分为前置过滤和后置过滤,像拦截器中的Intercep