资讯专栏INFORMATION COLUMN

Spring Cloud Gateway 之 AddRequestHeader GatewayFil

宋华 / 2247人阅读

摘要:类似的工厂类还有和,,,这几个就不做多带带讲解了,使用方式是一样的。配置示列配置示列讨论时间文章中讲的这几个工厂类的作用我们已经了解了,那具体的使用场景有哪些适合在什么场景下使用呢欢迎大家留言讨论。

今天我们来学习下GatewayFilter Factory,中文解释就是过滤器工厂。

官方文档对GatewayFilter Factory的介绍:

Route filters allow the modification of the incoming HTTP request or outgoing HTTP response in some manner. Route filters are scoped to a particular route. Spring Cloud Gateway includes many built-in GatewayFilter Factories.

文档地址:http://cloud.spring.io/spring...

英文不好,就随意翻译下,大概的意思如下:

Spring Cloud Gateway的路由过滤器允许以某种方式修改传入的HTTP请求或输出的HTTP响应。只作用于特定的路由。Spring Cloud Gateway中内置了很多的过滤器工厂。

通过目前的文档,我看到了内置的数量为20个,今天我们来学习第一个过滤器工厂AddRequestHeader GatewayFilter Factory。

通过名称我们可以快速的明白这个过滤器工厂的作用,就是添加请求头。

使用示列:

spring:
  cloud:
    gateway:
      routes:
      - id: fsh-house
        uri: lb://fsh-house
        predicates:
        - Path=/house/**
        filters:
        - AddRequestHeader=NAME, yinjihuan

上面的配置,我们针对fsh-house这个服务的路由配置了AddRequestHeader,增加了一个名称为NAME,值是yinjihuan的请求头。

这样配置之后,在fsh-house服务中的所有接口,都可以通过request来获取到NAME请求头的信息,代码如下:

@GetMapping("/hello")
public String hello(HttpServletRequest request) throws  Exception {
    System.err.println(request.getHeader("NAME"));
    return "Hello"+serverPort;
}

如果我们需要传递多个请求头咋配置?

 filters:
        - AddRequestHeader=NAME, yinjihuan
        - AddRequestHeader=NAME2, yinjihuan2

配置2个过滤器就行了,是不支持一个过滤器配置多个请求头的方式,原因我们通过源码可以得出,请看源码:

public class AddRequestHeaderGatewayFilterFactory extends AbstractNameValueGatewayFilterFactory {

    @Override
    public GatewayFilter apply(NameValueConfig config) {
        return (exchange, chain) -> {
            ServerHttpRequest request = exchange.getRequest().mutate()
                    .header(config.getName(), config.getValue())
                    .build();

            return chain.filter(exchange.mutate().request(request).build());
        };
    }

}

NameValueConfig就2个字段,一个name,一个value,对应的也就是请求头的名称和值。

类似的工厂类还有AddRequestParameter和AddResponseHeader,RemoveRequestHeader,RemoveResponseHeader,这几个就不做多带带讲解了,使用方式是一样的。一个是添加请求参数,一个是添加响应的请求头。

AddRequestParameter配置示列:

 filters:
        - AddRequestParameter=name, yinjihuan

AddResponseHeader配置示列:

 filters:
        - AddResponseHeader=name, yinjihuan
讨论时间

文章中讲的这几个工厂类的作用我们已经了解了,那具体的使用场景有哪些?适合在什么场景下使用呢?欢迎大家留言讨论。

欢迎加入我的知识星球,一起交流技术,免费学习猿天地的课程(http://cxytiandi.com/course)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73597.html

相关文章

  • Spring Cloud Gateway实战五:内置filter

    摘要:欢迎访问我的欢迎访问我的内容所有原创文章分类汇总及配套源码,涉及等本篇概览本篇概览作为实战系列的第五篇,是时候了解过滤器的作用了,本篇咱们一起来了解内置好的过滤器,真是种类繁多功能强大过滤器顾名思义,就是在请求头部添加指定的内容带有的完整配欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:所有原创文章分类汇总及配套源码,涉及Java、Doc...

    reclay 评论0 收藏0
  • Spring Cloud Gateway修改请求和响应body的内容

    摘要:欢迎访问我的欢迎访问我的内容所有原创文章分类汇总及配套源码,涉及等本篇概览本篇概览作为实战系列的第九篇,咱们聊聊如何用修改原始请求和响应内容,以及修改过程中遇到的问题首先是修改请求,如下图,浏览器是请求发起方,真实参数只有,经过网关时被塞欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:所有原创文章分类汇总及配套源码,涉及Java、Dock...

    ivyzhang 评论0 收藏0
  • Spring Cloud Gateway的入门案例

    摘要:原文摘要本篇文章主要介绍了什么是,并基于的版本编写一个的入门案例,即基本代理的路由转发配置。作为生态系中的网关,目标是替代,其不仅提供统一的路由方式,并且基于链的方式提供了网关基本的功能,例如安全,监控埋点,和限流等。 原文:http://xujin.org/sc/gw/gw-01/ 摘要:本篇文章主要介绍了什么是Spring Cloud Gateway,并基于Spring Clou...

    lavnFan 评论0 收藏0
  • Spring Cloud GateWay 路由转发规则介绍

    摘要:组合示例相同的也可以配置多个,请求的转发是必须满足所有的后才可以进行路由转发,组合使用示例如下所示总结本章节讲解了的相关谓词断言基本使用方式,内部提供了很多种灵活的路由转发规则,在同一个路由内存在多个时,同时满足规则后请求才会被路由转发。 Spring在因Netflix开源流产事件后,在不断的更换Netflix相关的组件,比如:Eureka、Zuul、Feign、Ribbon等,Zuu...

    zgbgx 评论0 收藏0
  • SpringCloud(第 018 篇)Zuul 服务 API 网关微服务代理与反向代理

    摘要:注意注解能注册到服务上,是因为该注解包含了客户端的注解,该是一个复合注解。地址可以查看该微服务网关代理了多少微服务的。 SpringCloud(第 018 篇)Zuul 服务 API 网关微服务之代理与反向代理 - 一、大致介绍 1、API 服务网关顾名思义就是统一入口,类似 nginx、F5 等功能一样,统一代理控制请求入口,弱化各个微服务被客户端记忆功能; 2、本章节主要讲解了使用...

    YancyYe 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<