摘要:類似的工廠類還有和,,,這幾個就不做多帶帶講解了,使用方式是一樣的。配置示列配置示列討論時間文章中講的這幾個工廠類的作用我們已經了解了,那具體的使用場景有哪些適合在什么場景下使用呢歡迎大家留言討論。
今天我們來學習下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)文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73597.html
摘要:歡迎訪問我的歡迎訪問我的內容所有原創文章分類匯總及配套源碼,涉及等本篇概覽本篇概覽作為實戰系列的第五篇,是時候了解過濾器的作用了,本篇咱們一起來了解內置好的過濾器,真是種類繁多功能強大過濾器顧名思義,就是在請求頭部添加指定的內容帶有的完整配歡迎訪問我的GitHubhttps://github.com/zq2599/blog_demos內容:所有原創文章分類匯總及配套源碼,涉及Java、Doc...
摘要:歡迎訪問我的歡迎訪問我的內容所有原創文章分類匯總及配套源碼,涉及等本篇概覽本篇概覽作為實戰系列的第九篇,咱們聊聊如何用修改原始請求和響應內容,以及修改過程中遇到的問題首先是修改請求,如下圖,瀏覽器是請求發起方,真實參數只有,經過網關時被塞歡迎訪問我的GitHubhttps://github.com/zq2599/blog_demos內容:所有原創文章分類匯總及配套源碼,涉及Java、Dock...
摘要:原文摘要本篇文章主要介紹了什么是,并基于的版本編寫一個的入門案例,即基本代理的路由轉發配置。作為生態系中的網關,目標是替代,其不僅提供統一的路由方式,并且基于鏈的方式提供了網關基本的功能,例如安全,監控埋點,和限流等。 原文:http://xujin.org/sc/gw/gw-01/ 摘要:本篇文章主要介紹了什么是Spring Cloud Gateway,并基于Spring Clou...
摘要:組合示例相同的也可以配置多個,請求的轉發是必須滿足所有的后才可以進行路由轉發,組合使用示例如下所示總結本章節講解了的相關謂詞斷言基本使用方式,內部提供了很多種靈活的路由轉發規則,在同一個路由內存在多個時,同時滿足規則后請求才會被路由轉發。 Spring在因Netflix開源流產事件后,在不斷的更換Netflix相關的組件,比如:Eureka、Zuul、Feign、Ribbon等,Zuu...
摘要:注意注解能注冊到服務上,是因為該注解包含了客戶端的注解,該是一個復合注解。地址可以查看該微服務網關代理了多少微服務的。 SpringCloud(第 018 篇)Zuul 服務 API 網關微服務之代理與反向代理 - 一、大致介紹 1、API 服務網關顧名思義就是統一入口,類似 nginx、F5 等功能一樣,統一代理控制請求入口,弱化各個微服務被客戶端記憶功能; 2、本章節主要講解了使用...
閱讀 3106·2021-11-18 10:02
閱讀 2618·2021-10-13 09:47
閱讀 3034·2021-09-22 15:07
閱讀 791·2019-08-30 15:43
閱讀 1810·2019-08-30 10:59
閱讀 1685·2019-08-29 15:34
閱讀 1702·2019-08-29 15:06
閱讀 439·2019-08-29 13:28