日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

實戰Spring Cloud Gateway自定義謂詞及網關過濾器

來源: 責編: 時間:2024-04-03 09:11:09 266觀看
導讀環境:SpringBoot2.7.12 + SpringCloud2021.0.71. 簡介Spring Cloud Gateway 中,路由斷言(predicates)和過濾器(filters)是兩個核心概念,它們共同決定了如何處理進入網關的請求。謂詞工廠謂詞工廠用于定義路由斷言。斷言是路

環境:SpringBoot2.7.12 + SpringCloud2021.0.7m0M28資訊網——每日最新資訊28at.com

1. 簡介

Spring Cloud Gateway 中,路由斷言(predicates)和過濾器(filters)是兩個核心概念,它們共同決定了如何處理進入網關的請求。m0M28資訊網——每日最新資訊28at.com

謂詞工廠

謂詞工廠用于定義路由斷言。斷言是路由的一個條件,只有當條件滿足時,請求才會被路由到指定的服務。Spring Cloud Gateway 提供了一系列的內置斷言,例如基于路徑、請求頭、請求方法等的斷言。然而,如果你需要實現一些特定的業務邏輯或自定義條件,你可以創建自定義的謂詞工廠。m0M28資訊網——每日最新資訊28at.com

自定義謂詞工廠通常需要實現 org.springframework.cloud.gateway.handler.predicate.AbstractRoutePredicateFactory 或其子類,并定義斷言的條件。在創建自定義謂詞工廠時,你需要指定謂詞的名字、配置類以及斷言的匹配邏輯。m0M28資訊網——每日最新資訊28at.com

例如,你可以創建一個自定義謂詞工廠來檢查請求中是否包含特定的自定義請求頭。m0M28資訊網——每日最新資訊28at.com

網關過濾器工廠

網關過濾器工廠用于定義在路由匹配后應用于請求的過濾器。這些過濾器可以對請求和響應進行修改,例如添加請求頭、修改響應體或進行身份驗證等。Spring Cloud Gateway 同樣提供了一系列的內置過濾器,但同樣,如果你需要實現特定的業務邏輯或自定義處理,你可以創建自定義的網關過濾器工廠。m0M28資訊網——每日最新資訊28at.com

自定義網關過濾器工廠通常需要實現 org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory,并定義過濾器的邏輯。你可以在這里編寫 Java 代碼來實現對請求和響應的自定義處理。m0M28資訊網——每日最新資訊28at.com

例如,你可以創建一個自定義網關過濾器工廠來記錄每個請求的詳細信息,或者根據特定的業務邏輯修改響應的內容。m0M28資訊網——每日最新資訊28at.com

2. 實戰案例

2.1 自定義謂詞工廠

該謂詞工廠的作用檢查請求參數及header中個性化的信息。m0M28資訊網——每日最新資訊28at.com

@Componentpublic class ParamHeaderRoutePredicateFactory extends AbstractRoutePredicateFactory<ParamHeaderRoutePredicateFactory.Config> {    public static final String PARAM_KEY = "param";  public static final String HEADER_KEY = "header" ;  public static final String PARAM_VALUE = "pv" ;  public static final String HEADER_VALUE = "hv" ;    public ParamHeaderRoutePredicateFactory() {    super(Config.class);  }  @Override  public List<String> shortcutFieldOrder() {    return Arrays.asList(PARAM_KEY, PARAM_VALUE, HEADER_KEY, HEADER_VALUE) ;  }  @Override  public Predicate<ServerWebExchange> apply(Config config) {    return new GatewayPredicate() {      @Override      public boolean test(ServerWebExchange t) {        String pv = t.getRequest().getQueryParams().getFirst(config.param) ;        String hv = t.getRequest().getHeaders().getFirst(config.header) ;        System.err.printf("請求參數: %s=%s, 請求頭: %s=%s%n", config.param, pv, config.header, hv) ;        return config.pv.equals(pv) && config.hv.equals(hv) ;      }    } ;  }    // 驗證配置參數  @Validated  public static class Config {    @NotEmpty(message = "參數param不能為空")    private String param ;    @NotEmpty(message = "請求header不能為空")    private String header ;    private String pv ;    private String hv ;    // getter, setter  }}

使用m0M28資訊網——每日最新資訊28at.com

spring:  cloud:    gateway:      default-filters:      - StripPrefix=1       routes:                 - id: pack-lbs-1        uri: packlb://cloudAppServiceProvider        predicates:        #- ParamHeader=q,java,v,1        - name: ParamHeader          args:            param: q            pv: java            header: v            hv: 1

請求中的q參數值必須是java,請求header中的v值必須是1,才會匹配該路徑。m0M28資訊網——每日最新資訊28at.com

圖片圖片m0M28資訊網——每日最新資訊28at.com

2.2 自定義網關過濾器工廠

該過濾器的功能是改寫請求參數信息。m0M28資訊網——每日最新資訊28at.com

@Componentpublic class CustomGatewayFilterFactory extends AbstractGatewayFilterFactory<Config> {    public CustomGatewayFilterFactory() {    super(Config.class) ;  }    @Override  public List<String> shortcutFieldOrder() {    return super.shortcutFieldOrder() ;  }  @Override  public GatewayFilter apply(Config config) {    return (exchange, chain) -> {      Route r = exchange.getAttribute(GATEWAY_ROUTE_ATTR) ;      Map<String,Object> metadata = r.getMetadata() ;      System.out.println(metadata) ;            ServerHttpRequest request = exchange.getRequest() ;      URI uri = request.getURI() ;        // 獲取idNo參數,改寫請求參數idNo數值      MultiValueMap<String, String> queryParams = request.getQueryParams();      String idNo = queryParams.getFirst("idNo") ;      // 對idNo參數進行解密操作(只是演示)      idNo = idNo + "-new" ;      // 這里為了演示簡單,不考慮多個參數的情況      String query = "idNo=" + idNo ;      System.out.println(uri) ;      URI newUri = UriComponentsBuilder.fromUri(uri).replaceQuery(query).build(true).toUri() ;      System.out.println(newUri) ;      Builder builder = request.mutate().uri(newUri) ;      return chain.filter(exchange.mutate().request(builder.build()).build()) ;    };  }  public static class Config {  }}

使用m0M28資訊網——每日最新資訊28at.com

spring:  cloud:    gateway:      routes:      - id: demo-service-01        uri: http://localhost:8088        predicates:        - name: Path          args:            a: /api-x/**        filters:        - name: Custom

測試m0M28資訊網——每日最新資訊28at.com

圖片圖片m0M28資訊網——每日最新資訊28at.com

Spring Cloud Gateway 的自定義謂詞工廠和網關過濾器工廠為開發者提供了靈活性和擴展性,使得開發者可以根據業務需求自定義路由條件和請求處理邏輯。通過實現這些自定義組件,你可以輕松地構建出滿足特定業務需求的 API 網關。m0M28資訊網——每日最新資訊28at.com

以上是本篇文章全部內容,希望對你有幫助。m0M28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-81064-0.html實戰Spring Cloud Gateway自定義謂詞及網關過濾器

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 使用Kafka構建實時音樂排行榜系統,你學會了嗎?

下一篇: gSASRec : 利用負采樣降低序列推薦中的過度自信問題

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
美女脱光内衣内裤视频久久影院 | 欧美日韩视频不卡| 欧美区视频在线观看| 欧美日韩亚洲三区| 国产热re99久久6国产精品| 黄色一区二区三区| 日韩午夜av| 一区二区三区日韩欧美| 欧美中文日韩| 欧美激情麻豆| 国产乱码精品一区二区三| 在线看片第一页欧美| 亚洲香蕉视频| 麻豆精品精华液| 国产精品99一区二区| 国内自拍亚洲| 一区二区三区日韩欧美| 久久婷婷麻豆| 国产精品国产精品国产专区不蜜| 精品二区视频| 亚洲永久免费观看| 欧美高清在线观看| 国产亚洲欧美中文| 宅男噜噜噜66国产日韩在线观看| 久久精品国产欧美亚洲人人爽| 欧美精品在线看| 国产视频一区在线观看一区免费| 亚洲精品小视频| 久久精品一本久久99精品| 欧美日韩一区在线播放| 在线观看成人小视频| 亚洲影院一区| 欧美激情一区二区三级高清视频| 国产日韩亚洲| 亚洲天堂男人| 欧美电影免费观看网站| 国产日韩亚洲欧美| 一区二区三区久久网| 麻豆久久婷婷| 国产日韩欧美综合| 亚洲一区免费网站| 欧美精品激情在线观看| 在线观看的日韩av| 欧美在线电影| 国产精品美女午夜av| 亚洲精选在线| 美女成人午夜| 国语自产精品视频在线看| 亚洲一二区在线| 欧美理论视频| 亚洲国产日韩美| 久久男人av资源网站| 国产日韩精品在线播放| 亚洲一区二区免费看| 欧美日韩国产经典色站一区二区三区| 亚洲电影专区| 久久精品女人| 国产日韩在线不卡| 午夜精品亚洲一区二区三区嫩草| 欧美四级在线观看| 亚洲精选大片| 欧美激情亚洲国产| 亚洲人成7777| 欧美freesex交免费视频| 黄色一区二区三区四区| 欧美中文字幕在线播放| 国产欧美日韩精品专区| 亚洲欧美日韩一区| 国产精品久久久久久久一区探花| 99在线|亚洲一区二区| 欧美区一区二区三区| 亚洲精品女人| 欧美精品色网| 一区二区国产精品| 欧美日韩一区二区三| 99精品热6080yy久久| 欧美日韩国产91| 日韩一级在线| 欧美色另类天堂2015| 国产精品99久久久久久久久久久久| 欧美日韩国产精品专区| 一本色道久久综合亚洲精品不| 欧美日韩视频| 亚洲小视频在线观看| 国产精品日日摸夜夜添夜夜av| 亚洲午夜激情网页| 国产精品video| 亚洲一区二区四区| 国产精品视频一| 欧美伊人久久久久久久久影院 | 欧美日韩亚洲一区二区三区四区 | 午夜在线a亚洲v天堂网2018| 国产日韩欧美91| 久久精品道一区二区三区| 国产一区二区三区电影在线观看| 欧美专区日韩专区| 国产亚洲a∨片在线观看| 久久久九九九九| 亚洲国产精品成人va在线观看| 欧美肥婆在线| 一区二区三区日韩在线观看| 国产精品日韩一区| 久久久精品午夜少妇| 亚洲国产欧美一区二区三区丁香婷| 欧美激情一区二区| 亚洲综合好骚| 含羞草久久爱69一区| 另类天堂视频在线观看| 亚洲久久视频| 国产精品va在线播放| 欧美一级大片在线免费观看| 伊人久久成人| 欧美日韩三级视频| 欧美在线免费播放| 亚洲成人原创| 欧美日韩亚洲三区| 翔田千里一区二区| 在线精品福利| 欧美午夜精品理论片a级按摩| 午夜老司机精品| 在线观看一区| 欧美性大战久久久久久久| 欧美中文字幕在线播放| 亚洲国产精选| 国产精品美女久久久浪潮软件| 久久久久久久一区二区| 日韩视频在线一区二区三区| 国产精品欧美久久久久无广告| 久久亚洲视频| 中文在线一区| 在线观看日产精品| 欧美午夜女人视频在线| 久久青青草综合| 亚洲午夜精品一区二区三区他趣 | 国产精品99久久久久久宅男| 国产一区香蕉久久| 欧美日韩国产免费| 久久久久久香蕉网| 亚洲一区二区精品视频| 亚洲国产精品高清久久久| 国产精品免费福利| 蜜桃av一区二区三区| 亚洲欧美国产精品桃花| 亚洲国产欧美日韩精品| 国产情侣久久| 欧美日韩国产麻豆| 久久深夜福利| 亚洲欧美日韩一区在线| 亚洲茄子视频| 狠狠色综合色区| 国产精品毛片a∨一区二区三区|国 | 久久精品官网| 亚洲午夜精品在线| 亚洲国产精品一区| 国产亚洲精品7777| 欧美日韩一区二区在线播放| 久久这里只有| 欧美在线亚洲综合一区| 亚洲性视频网址| 亚洲人成毛片在线播放| 狠狠狠色丁香婷婷综合久久五月| 欧美婷婷久久| 欧美黄色片免费观看| 久久久夜夜夜| 午夜精品美女自拍福到在线| 夜夜嗨一区二区三区| 亚洲第一精品福利| 国产精品一区二区三区久久| 欧美日韩视频在线一区二区 | 国产女主播一区二区三区| 欧美日韩综合| 欧美精品黄色| 欧美1级日本1级| 久久视频这里只有精品| 久久岛国电影| 香蕉久久久久久久av网站 | 欧美日韩一区二区欧美激情| 欧美成人乱码一区二区三区| 久久久蜜桃精品| 欧美在线在线| 欧美与黑人午夜性猛交久久久| 亚洲综合清纯丝袜自拍| 亚洲午夜精品一区二区三区他趣 | 久久久精品国产免费观看同学| 亚洲欧美在线免费观看| 亚洲图片你懂的| 一区二区三区视频在线看| 99re6热在线精品视频播放速度| 亚洲国产日韩在线| 亚洲国内在线| 亚洲日本精品国产第一区| 亚洲国产一区二区在线| 亚洲国产精品黑人久久久 | 亚洲一区在线播放| 亚洲午夜日本在线观看| 亚洲视频免费看| 亚洲一区二区三区免费在线观看| 一区二区三区鲁丝不卡| 亚洲少妇一区| 亚洲私人影院在线观看| 亚洲一区二区在线| 亚洲自拍偷拍视频| 香蕉免费一区二区三区在线观看 | 日韩视频一区二区三区|