GateWay 网关路由过滤器配置
GatewayFilter 是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理。Spring提供了31种不同的路由过滤器工厂。官方文档:Spring Cloud Gateway名称说明AddRequestHeader给当前请求添加一个请求头RemoveRequestHeader移除请求中的一个请求头AddResponseHeader给响应结果中添加一个响应头RemoveResp
GatewayFilter 是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理。
Spring提供了31种不同的路由过滤器工厂。
官方文档:Spring Cloud Gateway
名称 | 说明 |
---|---|
AddRequestHeader | 给当前请求添加一个请求头 |
RemoveRequestHeader | 移除请求中的一个请求头 |
AddResponseHeader | 给响应结果中添加一个响应头 |
RemoveResponseHeader | 从响应结果中移除有一个响应头 |
RequestRateLimiter | 限制请求的流量 |
下面我们以 AddRequestHeader 为例:
需求:给所有进入 userservice 的请求添加一个请求头:sign=xn2001.com is eternal
只需要修改 gateway 服务的 application.yml文件,添加路由过滤即可。
spring:
cloud:
gateway:
routes: # 网关路由配置
- id: user-service # 路由id,自定义,只要唯一即可
# uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称
predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
- Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
filters: #路由过滤器
- AddRequestHeader=sign, xn2001.com is eternal # 添加请求头
如何验证,我们修改 userservice 中的一个接口
@GetMapping("/{id}")
public User queryById(@PathVariable("id") Long id, @RequestHeader(value = "sign", required = false) String sign) {
log.warn(sign);
return userService.queryById(id);
}
重启两个服务,访问本地user服务的接口:http://localhost:10010/user/1
可以看到控制台打印出了这个请求头
当然,Gateway 也是有全局过滤器的,如果要对所有的路由都生效,则可以将过滤器工厂写到 default-filters 下:
spring:
cloud:
gateway:
default-filters: #默认过滤器
- AddRequestHeader=sign, xn2001.com is eternal # 添加请求头
以上讲了两种过滤器
1:路由过滤器
2:默认过滤器
还有一种:全局过滤器【GlobalFilter】
在:GateWay 全局过滤器【GlobalFilter】_二后生的博客-CSDN博客
文会讲到
更多推荐
所有评论(0)