摘要:類似的工廠類還有和,,,這幾個就不做多帶帶講解了,使用方式是一樣的。配置示列配置示列討論時間文章中講的這幾個工廠類的作用我們已經(jīng)了解了,那具體的使用場景有哪些適合在什么場景下使用呢歡迎大家留言討論。
今天我們來學(xué)習(xí)下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響應(yīng)。只作用于特定的路由。Spring Cloud Gateway中內(nèi)置了很多的過濾器工廠。
通過目前的文檔,我看到了內(nèi)置的數(shù)量為20個,今天我們來學(xué)習(xí)第一個過濾器工廠AddRequestHeader GatewayFilter Factory。
通過名稱我們可以快速的明白這個過濾器工廠的作用,就是添加請求頭。
使用示列:
spring: cloud: gateway: routes: - id: fsh-house uri: lb://fsh-house predicates: - Path=/house/** filters: - AddRequestHeader=NAME, yinjihuan
上面的配置,我們針對fsh-house這個服務(wù)的路由配置了AddRequestHeader,增加了一個名稱為NAME,值是yinjihuan的請求頭。
這樣配置之后,在fsh-house服務(wù)中的所有接口,都可以通過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,對應(yīng)的也就是請求頭的名稱和值。
類似的工廠類還有AddRequestParameter和AddResponseHeader,RemoveRequestHeader,RemoveResponseHeader,這幾個就不做多帶帶講解了,使用方式是一樣的。一個是添加請求參數(shù),一個是添加響應(yīng)的請求頭。
AddRequestParameter配置示列:
filters: - AddRequestParameter=name, yinjihuan
AddResponseHeader配置示列:
filters: - AddResponseHeader=name, yinjihuan討論時間
文章中講的這幾個工廠類的作用我們已經(jīng)了解了,那具體的使用場景有哪些?適合在什么場景下使用呢?歡迎大家留言討論。
歡迎加入我的知識星球,一起交流技術(shù),免費(fèi)學(xué)習(xí)猿天地的課程(http://cxytiandi.com/course)文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73597.html
摘要:歡迎訪問我的歡迎訪問我的內(nèi)容所有原創(chuàng)文章分類匯總及配套源碼,涉及等本篇概覽本篇概覽作為實(shí)戰(zhàn)系列的第五篇,是時候了解過濾器的作用了,本篇咱們一起來了解內(nèi)置好的過濾器,真是種類繁多功能強(qiáng)大過濾器顧名思義,就是在請求頭部添加指定的內(nèi)容帶有的完整配歡迎訪問我的GitHubhttps://github.com/zq2599/blog_demos內(nèi)容:所有原創(chuàng)文章分類匯總及配套源碼,涉及Java、Doc...
摘要:歡迎訪問我的歡迎訪問我的內(nèi)容所有原創(chuàng)文章分類匯總及配套源碼,涉及等本篇概覽本篇概覽作為實(shí)戰(zhàn)系列的第九篇,咱們聊聊如何用修改原始請求和響應(yīng)內(nèi)容,以及修改過程中遇到的問題首先是修改請求,如下圖,瀏覽器是請求發(fā)起方,真實(shí)參數(shù)只有,經(jīng)過網(wǎng)關(guān)時被塞歡迎訪問我的GitHubhttps://github.com/zq2599/blog_demos內(nèi)容:所有原創(chuàng)文章分類匯總及配套源碼,涉及Java、Dock...
摘要:原文摘要本篇文章主要介紹了什么是,并基于的版本編寫一個的入門案例,即基本代理的路由轉(zhuǎn)發(fā)配置。作為生態(tài)系中的網(wǎng)關(guān),目標(biāo)是替代,其不僅提供統(tǒng)一的路由方式,并且基于鏈的方式提供了網(wǎng)關(guān)基本的功能,例如安全,監(jiān)控埋點(diǎn),和限流等。 原文:http://xujin.org/sc/gw/gw-01/ 摘要:本篇文章主要介紹了什么是Spring Cloud Gateway,并基于Spring Clou...
摘要:組合示例相同的也可以配置多個,請求的轉(zhuǎn)發(fā)是必須滿足所有的后才可以進(jìn)行路由轉(zhuǎn)發(fā),組合使用示例如下所示總結(jié)本章節(jié)講解了的相關(guān)謂詞斷言基本使用方式,內(nèi)部提供了很多種靈活的路由轉(zhuǎn)發(fā)規(guī)則,在同一個路由內(nèi)存在多個時,同時滿足規(guī)則后請求才會被路由轉(zhuǎn)發(fā)。 Spring在因Netflix開源流產(chǎn)事件后,在不斷的更換Netflix相關(guān)的組件,比如:Eureka、Zuul、Feign、Ribbon等,Zuu...
摘要:注意注解能注冊到服務(wù)上,是因?yàn)樵撟⒔獍丝蛻舳说淖⒔?,該是一個復(fù)合注解。地址可以查看該微服務(wù)網(wǎng)關(guān)代理了多少微服務(wù)的。 SpringCloud(第 018 篇)Zuul 服務(wù) API 網(wǎng)關(guān)微服務(wù)之代理與反向代理 - 一、大致介紹 1、API 服務(wù)網(wǎng)關(guān)顧名思義就是統(tǒng)一入口,類似 nginx、F5 等功能一樣,統(tǒng)一代理控制請求入口,弱化各個微服務(wù)被客戶端記憶功能; 2、本章節(jié)主要講解了使用...
閱讀 3118·2021-11-18 10:02
閱讀 2627·2021-10-13 09:47
閱讀 3073·2021-09-22 15:07
閱讀 805·2019-08-30 15:43
閱讀 1821·2019-08-30 10:59
閱讀 1701·2019-08-29 15:34
閱讀 1713·2019-08-29 15:06
閱讀 453·2019-08-29 13:28