国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringCloudGateway學(xué)習(xí)(2)-過濾器

這篇具有很好參考價(jià)值的文章主要介紹了SpringCloudGateway學(xué)習(xí)(2)-過濾器。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.簡介

?Gateway?作用:過濾器就是在請求的傳遞過程中,對請求和響應(yīng)做一些手腳。

?Gateway?生命周期:Pre Post。

  • PRE:這種過濾器在請求被路由之前調(diào)用。我們可利用這種過濾器實(shí)現(xiàn)身份驗(yàn)證、在集群中選擇請求的微服務(wù)、記錄調(diào)試信息等。
  • POST:這種過濾器在路由到微服務(wù)以后執(zhí)行。這種過濾器可用來為響應(yīng)添加標(biāo)準(zhǔn)的HTTP Header、收集統(tǒng)計(jì)信息和指標(biāo)、將響應(yīng)從微服務(wù)發(fā)送給客戶端等。

Gateway?分類:局部過濾器全局過濾器。

  • 局部過濾器(GatewayFilter):應(yīng)用到單個(gè)路由或者一個(gè)分組的路由上。
  • 全局過濾器(GlobalFilter):應(yīng)用到所有的路由上。

2.?配置方式

? ?過濾器的配置分為兩種方式,一種是通過配置文件的方式,一種是通過編碼的方式。

2.1?配置文件方式

#這種是局部過濾器配置
spring:
  cloud:
    gateway:
      routes:
      - id: resource
        uri: http://localhost:9000
        predicates:
        - Path=/resource
        filters:
        - TokenRelay=



#這種是全局過濾器配置,只需要設(shè)置default-filters就可以了

spring:
  cloud:
    gateway:
      default-filters:
      - AddResponseHeader=X-Response-Default-Red, Default-Blue
      - PrefixPath=/httpbin

2.2編碼方式

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
            .route("resource", r -> r.path("/resource")
                    .filters(f -> f.tokenRelay())
                    .uri("http://localhost:9000"))
            .build();
}

3. 過濾器分類

?3.1?局部過濾器(GatewayFilter)

? ? 局部過濾器(GatewayFilter)是針對單個(gè)路由的過濾器,對訪問的URL過濾,切面處理。在Spring Cloud Gateway中通過GatewayFilter的形式內(nèi)置了很多不同類型的局部過濾器。內(nèi)置了31種過濾器。

序號 過濾器 作用 參數(shù)名 參數(shù)值 示例(filters配置) 備注
1 AddRequestHeader 添加請求頭 name,value 添加的請求頭及其值 AddRequestHeader=X-Request-red, blue
2 AddRequestParameter 在Query String中添加請求參數(shù),參數(shù)值可以是變量,具體值可以從PATH或Host中匹配 name,value 添加的參數(shù)名及其值 AddRequestParameter=foo, bar-{segment}
3 AddResponseHeader 添加響應(yīng)頭 name,value 添加的響應(yīng)頭及其值 AddResponseHeader=X-Response-Red, Blue
4 DedupeResponseHeader 過濾重復(fù)響應(yīng)頭 name,strategy 需要過濾的響應(yīng)頭及策略(保留第一個(gè),保留最后一個(gè),保留唯一值) DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin
5 CircuitBreaker 熔斷器 name,fallbackUri,statusCodes 熔斷器名稱、熔斷后的默認(rèn)URI、熔斷觸發(fā)狀態(tài) #NAME? 使用熔斷器需配置spring-cloud-starter-circuitbreaker-reactor-resilience4j,詳見Resilience4J Documentation
6 FallbackHeaders 指定發(fā)生熔斷時(shí)fallback響應(yīng)頭 executionExceptionTypeHeaderName, executionExceptionMessageHeaderName, rootCauseExceptionTypeHeaderName, rootCauseExceptionMessageHeaderName 異常類型、詳情、根因類型、根因詳情等響應(yīng)頭名稱 executionExceptionTypeHeaderName: Test-Header
7 MapRequestHeader 添加新的請求頭,值從已有請求頭中獲取 fromHeader,toHeader 已有請求頭名稱,新請求頭名稱 MapRequestHeader=Blue, X-Request-Red
8 PrefixPath 請求路徑增加前綴 prefix 需增加的前綴 PrefixPath=/mypath
9 PreserveHostHeader 配置是否將原始請求頭發(fā)送到服務(wù)方 - - PreserveHostHeader
10 RequestRateLimiter 請求頻度控制 - - 默認(rèn)提供了基于Redis的頻度控制過濾器,也可以自定義
11 RedirectTo 重定向過濾器 status,url 重定向http status及重定向后的url RedirectTo=302, https://acme.org
12 RemoveRequestHeader 刪除請求頭 name 待刪除的請求頭 RemoveRequestHeader=X-Request-Foo
13 RemoveResponseHeader 刪除響應(yīng)頭 name 待刪除的響應(yīng)頭 RemoveResponseHeader=X-Response-Foo
14 RemoveRequestParameter 刪除請求參數(shù) name 待刪除的請求參數(shù)名 RemoveRequestParameter=red
15 RewritePath 重寫PATH regexp,replacement 重寫部分匹配規(guī)則,需替換的值 RewritePath=/red/?(?<segment>.*), /$\{segment} 匹配規(guī)則采用正則表達(dá)式,替換值支持從匹配中獲取
16 RewriteLocationResponseHeader 重寫響應(yīng)頭中的Location stripVersionMode, locationHeaderName, hostValue, protocolsRegex path中version處理模式,location響應(yīng)頭名稱,host值,url協(xié)議頭 RewriteLocationResponseHeader=AS_IN_REQUEST, Location, ,
17 RewriteResponseHeader 重寫響應(yīng)頭 name,regexp,replacement 響應(yīng)頭名稱,需修改值的匹配規(guī)則,需替換的值 RewriteResponseHeader=X-Response-Red, , password=[^&]+, password=***
18 SaveSession 強(qiáng)制觸發(fā)WebSession::save - - SaveSession
19 SecureHeaders 添加一組安全相關(guān)的頭信息到響應(yīng)中 - - SecureHeaders
20 SetPath 設(shè)置請求path template path模板 SetPath=/{segment}
21 SetRequestHeader 設(shè)置請求頭(不添加新的) name,value 請求頭及其值 SetRequestHeader=X-Request-Red, Blue
22 SetResponseHeader 設(shè)置響應(yīng)頭(不添加新的) name,value 響應(yīng)頭及其值 SetResponseHeader=X-Response-Red, Blue
23 SetStatus 設(shè)置響應(yīng)狀態(tài) status 響應(yīng)狀態(tài) SetStatus=401
24 StripPrefix 截?cái)嗾埱驪ATH parts 需截?cái)嗟拈L度(’/'個(gè)數(shù)) StripPrefix=2
25 Retry 重試過濾器 - - - 詳細(xì)配置
26 RequestSize 限流器 maxSize 請求最大報(bào)文大小 maxSize: 5000000
27 SetRequestHostHeader 設(shè)置請求host host 分組及權(quán)重 SetRequestHostHeader=example.org
28 ModifyRequestBody 修改請求報(bào)文 - - - 只能通過 Java DSL 配置
29 ModifyResponseBody 修改響應(yīng)報(bào)文 - - - 只能通過 Java DSL 配置
30 TokenRelay 配合OAuth2使用 - - TokenRelay=
31 CacheRequestBody 根據(jù)權(quán)重進(jìn)行路由 bodyClass 請求體類型 - 詳細(xì)配置

3.2?全局過濾器(GlobalFilter)?

? ? 全局過濾器作用于所有路由,無需配置。通過全局過濾器可以實(shí)現(xiàn)對權(quán)限的統(tǒng)一校驗(yàn),安全性驗(yàn)證等功能。

????????abstractgatewayfilterfactory,Sprng Cloud,gateway,spring cloud

?4.自定義過濾器

?4.1?自定義全局過濾器(GlobalFilter)

? ? ? ? a.前置過濾器

@Component
public class MyCustomGlobalFilter implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        System.out.println("this is custom pre filter");
        return chain.filter(exchange).then();
    }

    @Override
    public int getOrder() {
        return 0;
    }
}

b.后置過濾器

@Component
public class MyCustomGlobalFilter implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        return chain.filter(exchange).then(Mono.fromRunnable(() -> {
            System.out.println("this is post filter");
        }));
    }

    @Override
    public int getOrder() {
        return 0;
    }
}

4.2 自定義局部過濾器

? 局部過濾器實(shí)現(xiàn)需要繼承AbstractGatewayFilterFactory類,并且實(shí)現(xiàn)apply方法

import lombok.Data;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;

@Component
public class MyCustomLocalFiterFactory extends AbstractGatewayFilterFactory<MyCustomLocalFiterFactory.ParamsConfig> {
    @Override
    public String name() {
        return "mycustomlocalfiter";
    }

    public MyCustomLocalFiterFactory() {
        super(ParamsConfig.class);
    }

    @Override
    public GatewayFilter apply(ParamsConfig config) {
        return (exchange, chain) -> {
            return chain.filter(exchange).then(Mono.fromRunnable(() -> {
                System.out.println("name=" + config.getParamName() + ";value=" + config.getParamValue());
            }));
        };
    }


    @Data
    public static class ParamsConfig {
        private String paramName;

        private String paramValue;

    }
}

然后還需配置過濾器到路由上

spring:
  cloud:
    gateway:
      routes: #1路由
        - id: producer-one
          uri: lb://producter-one
          predicates: #2通過path斷言
            - Path=/*/producterone/**
          filters: #3過濾器,過濾器可以不用配置
            - StripPrefix=1
            - name: mycustomlocalfiter
              args:
                paramname: "this is paramName"
                paramvalue: "this is paramValue"
        - id: producer-two
          uri: http://localhost:8080
          predicates:
            - Path=/*/productertwo/
          filters:
            - StripPrefix=1

?abstractgatewayfilterfactory,Sprng Cloud,gateway,spring cloud

參考:

Gateway過濾器詳解_wh柒八九的博客-CSDN博客_gateway 過濾器

?Spring Cloud Gateway配置詳解-過濾器_EngineZhang的博客-CSDN博客

gateway自定義過濾器_小菜雞9527的博客-CSDN博客_gateway自定義過濾器文章來源地址http://www.zghlxwxcb.cn/news/detail-524993.html

到了這里,關(guān)于SpringCloudGateway學(xué)習(xí)(2)-過濾器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • FFMPEG 視頻類過濾器學(xué)習(xí)整理

    FFMPEG 視頻類過濾器學(xué)習(xí)整理

    針對FFMPEG提供視頻過濾器進(jìn)行了介紹,并提供使用實(shí)例 addroi 作用 在視頻幀上標(biāo)記一塊感興趣的區(qū)域。 幀數(shù)據(jù)被原封不動地傳遞,但元數(shù)據(jù)被附加到幀,指示可能影響后續(xù)編碼行為的感興趣區(qū)域??梢酝ㄟ^多次應(yīng)用過濾器來標(biāo)記多個(gè)區(qū)域。 參數(shù) qoffset: 應(yīng)用在此區(qū)域的量化偏

    2024年02月07日
    瀏覽(34)
  • 【Qt學(xué)習(xí)】06:事件與事件過濾器

    【Qt學(xué)習(xí)】06:事件與事件過濾器

    一、事件 事件event是由系統(tǒng)或者Qt本身在不同的時(shí)刻發(fā)出的,主要包括用戶事件與定時(shí)器事件, 當(dāng)用戶按下鼠標(biāo)、敲下鍵盤或者是窗口需要重新繪制的時(shí)候,都會發(fā)出一個(gè)相應(yīng)的事件,一些事件是在對用戶操作做出響應(yīng)時(shí)進(jìn)行發(fā)出(如鍵盤事件等);另一些事件則是由系統(tǒng)自

    2024年02月11日
    瀏覽(32)
  • 【C++學(xué)習(xí)】哈希的應(yīng)用—位圖與布隆過濾器

    【C++學(xué)習(xí)】哈希的應(yīng)用—位圖與布隆過濾器

    文章簡介 : 在這篇文章中,你會學(xué)習(xí)到關(guān)于哈希思想的最常見的兩個(gè)應(yīng)用,也就是 位圖 與 布隆過濾器 , 文章會講解位圖和布隆過濾器的概念,底層實(shí)現(xiàn),對應(yīng)的適應(yīng)的場景,以及相關(guān)經(jīng)典 海量數(shù)據(jù)面試題 及解析。 所謂位圖,就是用每一位來存放某種狀態(tài),適用于 海量

    2024年04月14日
    瀏覽(51)
  • Spring MVC學(xué)習(xí)筆記,包含mvc架構(gòu)使用,過濾器、攔截器、執(zhí)行流程等等

    Spring MVC學(xué)習(xí)筆記,包含mvc架構(gòu)使用,過濾器、攔截器、執(zhí)行流程等等

    ??????創(chuàng)作不易,各位看官點(diǎn)贊收藏. Spring MVC:Spring MVC是Spring Framework的一部分,是基于java實(shí)現(xiàn)的MVC的輕量級Web框架。 官網(wǎng)文檔地址:https://docs.spring.io/spring-framework/docs/4.2.4.RELEASE/spring-framework-reference/html/mvc.html 輕量級,簡單易學(xué)。 高效,基于請求和響應(yīng)的MVC框架。 與Spri

    2024年02月15日
    瀏覽(29)
  • JavaWEB學(xué)習(xí)筆記(二)------HTTP、Servlet、會話、過濾器、監(jiān)聽器、Ajax、前端工程化

    JavaWEB學(xué)習(xí)筆記(二)------HTTP、Servlet、會話、過濾器、監(jiān)聽器、Ajax、前端工程化

    目錄 HTTP HTTP1.1 請求和響應(yīng)的報(bào)文格式 請求報(bào)文 響應(yīng)報(bào)文 常見狀態(tài)響應(yīng)碼 Servlet? 靜態(tài)資源和動態(tài)資源 ?編輯 ?Servlet簡介? Servlet開發(fā)流程 導(dǎo)入和響應(yīng)頭問題 url-pattern不同寫法 url-pattern工作方式 Servlet注解方式配置 Servlet生命周期? Servlet繼承結(jié)構(gòu) Servlet接口 GenerisServlet類 Ht

    2024年01月21日
    瀏覽(28)
  • jQuery選擇器(二)(基本過濾器,內(nèi)容過濾器,可見過濾器)

    jQuery選擇器(二)(基本過濾器,內(nèi)容過濾器,可見過濾器)

    寫在前面 jQuery是一個(gè)快速、簡潔的 JavaScript 框架,是繼Prototype之后又一個(gè)優(yōu)秀的 JavaScript 代碼庫。jQuery的設(shè)計(jì)宗旨是“WriteLess,DoMore”,即倡導(dǎo)寫更少的代碼,做 更多的事情。jQuery封裝了 JavaScript 常用的功能代碼,提供一種簡便的 JavaScript 設(shè)計(jì)模式,優(yōu)化HTML文檔操作、事件

    2024年02月02日
    瀏覽(27)
  • Elasticsearch基礎(chǔ)篇(五):創(chuàng)建es索引并學(xué)習(xí)分析器、過濾器、分詞器的作用和配置

    Elasticsearch基礎(chǔ)篇(五):創(chuàng)建es索引并學(xué)習(xí)分析器、過濾器、分詞器的作用和配置

    Elasticsearch 是一個(gè)分布式搜索和分析引擎,它使用JSON文檔來存儲數(shù)據(jù)。索引是Elasticsearch中數(shù)據(jù)的基本組織單元之一,下面是Elasticsearch索引相關(guān)的基本概念: 結(jié)構(gòu)元素 Elasticsearch MySQL 數(shù)據(jù)庫 索引(Index) 數(shù)據(jù)庫(Database) 表格 類型(Type)* 表(Table) 記錄/行 文檔(Document)

    2024年02月03日
    瀏覽(64)
  • Gateway自定義過濾器——全局過濾器

    Gateway自定義過濾器——全局過濾器

    首先,我們要知道全局過濾器其實(shí)是特殊路由過濾器(特殊的GatewayFilter),會有條件地作用于所有路由。 為什么要自定義全局過濾器?就好比是看大門的保安大叔,平時(shí)主要是做好進(jìn)出大門外來人員登記即可,但是因?yàn)樾鹿谝咔?,現(xiàn)在還需要給外來人員測量體溫等等。而已有的

    2024年02月16日
    瀏覽(23)
  • 異常過濾器—MVC中異常過濾器使用

    異常過濾器—MVC中異常過濾器使用

    異常過濾器( Exception Filters )是 ASP.NET Core 中用于處理全局異常的機(jī)制。它們允許你在發(fā)生異常時(shí)捕獲、處理和記錄異常,并提供自定義的異常處理邏輯。異常過濾器在整個(gè)應(yīng)用程序范圍內(nèi)生效,可以用于處理各種異常情況。用于實(shí)現(xiàn)常見的錯(cuò)誤處理策略,沒有之前和之后事

    2024年02月13日
    瀏覽(95)
  • Javaweb | 過濾器、配置、過濾器鏈、優(yōu)先級

    Javaweb | 過濾器、配置、過濾器鏈、優(yōu)先級

    ??wei_shuo的個(gè)人主頁 ??wei_shuo的學(xué)習(xí)社區(qū) ??Hello World ! 概念 過濾器(Filter)是處于客戶端與服務(wù)器目標(biāo)資源之間的一道過濾技術(shù) 用戶的請求和響應(yīng)都需要經(jīng)過過濾器 過濾器作用 執(zhí)行地位在Servlet之前,客戶端發(fā)送請求是,會先經(jīng)過Filter,再到達(dá)目標(biāo)Servlet中;響應(yīng)時(shí),會根

    2023年04月17日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包