前言
Spring Cloud Gateway的路由过滤器允许以某种方式修改传入的HTTP请求或输出的HTTP响应。只作用于特定的路由。Spring Cloud Gateway中内置了很多的过滤器工厂。通过目前的文档,我看到了内置的数量为20个,今天我们来学习第一个过滤器工厂AddRequestHeader GatewayFilter Factory。通过名称我们可以快速的明白这个过滤器工厂的作用,就是添加请求头。
文档地址:http://cloud.spring.io/spring-cloud-gateway/single/spring-cloud-gateway.html
使用示例:
spring:
application:
name: zoo-plus-gateway
cloud:
gateway:
routes:
- id: zoo-plus-test
uri: lb://zoo-plus-test
predicates:
- Path=/test/**
filters:
- AddRequestHeader=name, xiefei
- StripPrefix=1
上面的配置,我们针对zoo-plus-test这个服务的路由配置了AddRequestHeader,增加了一个名称为name,值是xiefei的请求头。
这样配置之后,在zoo-plus-test服务中的所有接口,都可以通过request来获取到name请求头的信息,代码如下:
@GetMapping("master")
public Resp master(HttpServletRequest request) {
String name = request.getHeader("name");
System.out.println(name);
return Resp.ok(name);
}
传递多个请求头
filters:
- AddRequestHeader=name, xiefei
- AddRequestHeader=name2, xiefei
配置2个过滤器就行了,是不支持一个过滤器配置多个请求头的方式,原因我们通过源码可以得出,请看源码:
NameValueConfig就2个字段,一个name,一个value,对应的也就是请求头的名称和值。
类似的工厂类还有AddRequestParameter和AddResponseHeader,RemoveRequestHeader,RemoveResponseHeader,这几个就不做单独讲解了,使用方式是一样的。一个是添加请求参数,一个是添加响应的请求头.