Contents

最近在给spring cloud gateway 添加header信息,想解析token 然后再塞到header传到后面微服务组件。但有的时候不起效,就研究为啥。

通过继承 WebFilter,实现filter(ServerWebExchange exchage,WebFilterChain chain)
通过exchange.getRequest().mutate() 来构建ServerHttpRequest.Builder 正常这个应该是建造者模式,流式创建一个新的request对象,但其中有一个比较特别的就是header属性,headers方法,可以传入一个cunsumer对象,可以覆盖或删除对象,而且会直接影响到原来的request的header。这个可以理解为特意这么设计,可能为了改变header而不用每次都创建新的对象,其他属性的修改都符合建造者模式是复制一个对象,而不是直接修改原来对象。
这个比较特殊,允许header修改,且影响原来的对象。但不调用mutate方法却不能修改,因为原来对象是只读对象。

Contents