精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

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

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

環境:SpringBoot2.7.12 + SpringCloud2021.0.7

1. 簡介

Spring Cloud Gateway 中,路由斷言(predicates)和過濾器(filters)是兩個核心概念,它們共同決定了如何處理進入網關的請求。

謂詞工廠

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

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

例如,你可以創建一個自定義謂詞工廠來檢查請求中是否包含特定的自定義請求頭。

網關過濾器工廠

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

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

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

2. 實戰案例

2.1 自定義謂詞工廠

該謂詞工廠的作用檢查請求參數及header中個性化的信息。

@Component
public 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
  }
}

使用

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,才會匹配該路徑。

圖片圖片

2.2 自定義網關過濾器工廠

該過濾器的功能是改寫請求參數信息。

@Component
public 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 {
  }
}

使用

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

測試

圖片圖片

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

以上是本篇文章全部內容,希望對你有幫助。

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2023-01-26 01:41:27

核心全局過濾器

2023-04-14 09:01:25

2021-01-14 08:13:39

Spring Clou應用內置過濾器

2024-12-06 14:34:00

Spring過濾器

2023-02-15 08:12:19

http超時過濾器

2023-07-24 08:00:56

客戶端訪問指定

2022-05-16 08:22:11

網關過濾器路由

2010-02-24 14:59:52

WCF自定義過濾器

2017-04-12 14:43:01

Spring ClouZuul過濾器

2017-09-15 23:29:53

Spring Clou微服務架構過濾器

2017-05-04 22:30:17

Zuul過濾器微服務

2021-11-04 10:11:02

Sentinel網關限流

2021-01-14 07:54:19

Spring Clou應用路由

2022-05-13 08:23:07

Zuul微服務Zuul過濾器

2021-07-05 15:22:03

Servlet過濾器客戶端

2024-01-05 09:04:35

隆過濾器數據結構哈希函數

2024-11-04 08:45:48

布隆過濾器元數據指紋值

2009-09-29 13:55:23

Hibernate設置

2009-07-08 16:07:04

Servlet過濾器配

2009-07-08 15:30:56

Servlet過濾器
點贊
收藏

51CTO技術棧公眾號

国产精品久久9| 亚洲精品一区二三区不卡| 亚洲国产精品女人| 日本wwwxxxx| 日韩 欧美一区二区三区| 北条麻妃久久精品| 精品视频站长推荐| 欧美日韩伦理一区二区| 亚洲成av人综合在线观看| 日本免费高清一区| 国产18精品乱码免费看| 日韩成人伦理电影在线观看| 欧美成人精品激情在线观看| 精品夜夜澡人妻无码av| 欧美成人三级| 欧美日韩精品在线| 欧美视频在线第一页| 国产三级电影在线| 成人av网址在线| 精品在线视频免费| 卡一精品卡二卡三网站乱码| 欧美性欧美巨大黑白大战| 久久av喷吹av高潮av| 性xxxfllreexxx少妇| 国产一区二区三区四| 日本欧美国产在线| 日韩精品视频免费播放| 亚洲精品中文字幕乱码| 国产亚洲精品成人av久久ww| 大尺度在线观看| 亚洲精品69| 在线观看精品一区| 干日本少妇首页| 国产精品一区hongkong| 亚洲男同性恋视频| 亚洲午夜精品久久久中文影院av | 欧美三级一区二区| 日本wwww视频| 天天综合av| 亚洲成人免费影院| 成人午夜视频在线观看免费| 午夜成年人在线免费视频| 中文字幕中文乱码欧美一区二区| 日韩精品一线二线三线| 极品白浆推特女神在线观看| 91色.com| 日韩av影视| 国产天堂在线| 久久精品免视看| 精品国产乱码久久久久久蜜柚| 丰满肉肉bbwwbbww| 成人黄色在线视频| 激情视频在线观看一区二区三区| 全国男人的天堂网| 91亚洲大成网污www| 国产自产在线视频一区| 亚洲 小说区 图片区 都市| 成人sese在线| 精品国产综合区久久久久久| 欧美综合视频在线| xf在线a精品一区二区视频网站| 精品一区二区三区视频日产| 香港三日本三级少妇66| 久久蜜桃香蕉精品一区二区三区| 狼狼综合久久久久综合网| 日夜干在线视频| 久久久精品国产99久久精品芒果| 日本一区二区不卡高清更新| 91精彩在线视频| 亚洲色图制服丝袜| 国产一二三在线视频| 亚洲十八**毛片| 一区二区三区加勒比av| 婷婷五月综合缴情在线视频| 欧美另类老肥妇| 色欧美片视频在线观看在线视频| 九一精品在线观看| 国产一区二区三区亚洲综合| 欧美精品一区男女天堂| 国产精品20p| 91成人看片| 国模私拍一区二区三区| 无码人妻一区二区三区免费| 麻豆高清免费国产一区| 91免费看蜜桃| 国模精品一区二区| 亚洲精品第一国产综合野| 精品无码一区二区三区爱欲| 欧美黄色网页| 91精品国产高清一区二区三区| 精品国产乱码久久久久夜深人妻| 亚洲成a人片77777在线播放| 自拍偷拍亚洲在线| 亚洲免费激情视频| 精品一区二区免费在线观看| 国产精品视频一区二区三区经| 涩涩视频在线观看免费| 国产精品久久久久影视| 日本欧美黄色片| 少妇精品视频在线观看| 亚洲国产小视频| 小早川怜子一区二区的演员表| 亚洲日产国产精品| 91美女高潮出水| 日本亚洲一区| 一区二区三区高清| 久久撸在线视频| 少妇精品导航| 欧美成人午夜免费视在线看片 | 成人无遮挡免费网站视频在线观看 | 精品久久久久久一区| 日韩免费网站| 色av成人天堂桃色av| 日本xxxx免费| 99久久综合| 国产精品扒开腿做爽爽爽男男| 亚洲卡一卡二卡三| 亚洲同性gay激情无套| 青青在线视频观看| 加勒比视频一区| 九九九久久久久久| 国产精品视频第一页| 久久久91精品国产一区二区精品| 亚洲中文字幕无码av永久| www欧美在线观看| 正在播放国产一区| 亚洲欧美一区二区三区在线观看| 成人av免费在线| 激情六月天婷婷| 久久免费精品| 操日韩av在线电影| 一级片视频播放| 亚洲国产精品精华液2区45| 黄色国产精品视频| 窝窝社区一区二区| 91精品国产777在线观看| 精品国产亚洲AV| 亚洲精品国产一区二区三区四区在线 | 精品人妻中文无码av在线| 性欧美videos另类喷潮| 九九热久久66| 成人免费图片免费观看| 欧美tickling网站挠脚心| 欧美精品久久久久性色| 国产一区二区三区免费看| 伊甸园精品99久久久久久| 亚洲日本网址| 中文字幕精品在线视频| 在线观看不卡的av| 日韩一区在线免费观看| 999久久久精品视频| 亚洲情侣在线| 粉嫩av免费一区二区三区| 免费影视亚洲| 精品久久国产字幕高潮| 日韩成人在线免费视频| 91网站最新网址| 欧美黑人又粗又大又爽免费| 成人羞羞网站入口免费| 成人亲热视频网站| 日本高清在线观看| 亚洲第一色在线| 丁香六月婷婷综合| 国产欧美日韩视频一区二区| 粉色视频免费看| 午夜精品久久99蜜桃的功能介绍| 国产高清一区视频| 91精品产国品一二三产区| 亚洲性线免费观看视频成熟| 在线免费观看一级片| 亚洲精品免费电影| 国产乱了高清露脸对白| 视频一区视频二区中文字幕| 一级二级三级欧美| 亚洲视频国产| 日韩免费观看视频| 中文国产字幕在线观看| 日韩精品高清在线| 中文字幕乱码人妻无码久久| 亚洲乱码国产乱码精品精98午夜 | 日韩av黄色在线| 国产精品香蕉国产| 美女精品导航| 亚洲一区二区久久久| 精品人妻一区二区三区含羞草| 亚欧色一区w666天堂| 一区二区三区在线观看免费视频| 国产一区二区电影| 男人日女人逼逼| 久久看人人摘| 久久精品午夜一区二区福利| 中文成人在线| 国产91|九色| 菠萝菠萝蜜在线视频免费观看| 日韩二区三区在线| av中文字幕播放| 在线免费观看日本欧美| 精品无码免费视频| 国产精品乱人伦中文| www.88av| 国产精品乡下勾搭老头1| 日韩无套无码精品| 亚洲黄色精品| 9l视频自拍9l视频自拍| 国产精品手机在线播放 | xxxx18国产| 欧美日韩久久久一区| av中文在线资源| 精品一区二区亚洲| 99热这里只有精品1| 91极品美女在线| 在线看成人av| 亚洲精品综合在线| 精品一区二区三孕妇视频| 成人免费电影视频| 精品人妻一区二区乱码| 欧美aaa在线| aa在线免费观看| 精品91视频| 国内自拍中文字幕| 久久久久久久久久久妇女| 三区精品视频| 一区二区三区视频免费观看 | 亚洲一区网址| 国产综合视频在线观看| yy6080久久伦理一区二区| 777午夜精品福利在线观看| 天堂va在线| 美日韩精品视频免费看| 高清全集视频免费在线| 久久精品99国产精品酒店日本| 国产女主播在线写真| 亚洲欧美999| 日本在线视频1区| 亚洲激情视频在线播放| 人妻妺妺窝人体色www聚色窝| 日韩欧美国产午夜精品| 精品国产九九九| 日韩亚洲欧美一区二区三区| 国产精品久久久久久免费| 欧美嫩在线观看| 国产又粗又长又大视频| 69p69国产精品| 99热在线只有精品| 精品久久久久99| 天堂v视频永久在线播放| 国产视频精品在线| 黄色在线免费观看大全| 亚洲深夜福利在线| h视频网站在线观看| 视频一区视频二区国产精品| 在线国产情侣| 欧美不卡视频一区发布| 国产网红在线观看| 45www国产精品网站| 欧美xxx网站| 国产精品久久久久久久久久久久| 99欧美精品| 91久久爱成人| 亚洲+变态+欧美+另类+精品| 欧美亚洲丝袜| 日韩欧美视频| 日韩精品一区二区在线视频| 日韩午夜免费| 亚洲成人福利在线观看| 国产一区二区三区四区五区入口| 中文字幕第九页| 久久欧美一区二区| 在线观看天堂av| 亚洲国产一区视频| 黄色一级视频免费看| 欧美日韩一区二区在线观看| 超碰在线人人干| 精品网站999www| 欧洲美女少妇精品| 午夜美女久久久久爽久久| 电影亚洲精品噜噜在线观看| 成人网欧美在线视频| 成人动漫视频| 欧美一级二级三级九九九| 国产精品久久久久无码av| 亚洲精品久久久久久久蜜桃臀| 香蕉久久夜色精品| 亚洲欧美日本一区二区| 91女厕偷拍女厕偷拍高清| www.99re6| 色综合久久天天| 精品久久久中文字幕人妻| 亚洲欧美精品一区二区| 91最新在线视频| 国产精品高清在线观看| 77成人影视| 亚洲一区3d动漫同人无遮挡| 日韩一级大片| 99九九精品视频| 国产无人区一区二区三区| 免费网站看av| 精品视频一区二区不卡| 四季av日韩精品一区| 久久精品久久精品亚洲人| 欧美动物xxx| 精品视频导航| 国产精品videosex极品| 欧美午夜aaaaaa免费视频| 99久久99久久免费精品蜜臀| 日本精品人妻无码77777| 欧美亚洲动漫另类| 日韩美女一级视频| 欧美激情在线观看视频| 亚洲免费资源| 日韩欧美一区二区三区四区| 国产欧美精品| 久久久久国产免费| 亚洲欧洲99久久| 制服丝袜在线一区| 亚洲精品一区二区在线| 国产激情在线播放| 99电影在线观看| 91av精品| 成人不卡免费视频| 国产精品美女一区二区| 天堂网中文字幕| 亚洲美女性视频| 亚洲欧美小说色综合小说一区| 国产高清精品一区| 国产精品多人| 国产精品一级无码| 亚洲欧美日韩系列| 91影院在线播放| 日韩亚洲精品视频| 香蕉久久一区| 宅男一区二区三区| 亚洲欧美日韩一区二区三区四区| 精品国产乱码久久久久久久久| 18av在线视频| 亚洲自拍偷拍第一页| 天天综合网91| 久久久精品视频国产| 日韩美女视频19| 国产99对白在线播放| 久热精品视频在线观看| 精品久久国产一区| 国产成人生活片| 国产91丝袜在线观看| 久热精品在线观看| 亚洲国产另类久久精品 | 日韩在线视屏| 中文字幕66页| 亚洲精品亚洲人成人网在线播放| 国内精品国产成人国产三级| 九九九热精品免费视频观看网站| jizzjizzjizz欧美| 欧美 日韩 激情| 久久综合狠狠综合| 亚洲大尺度在线观看| 上原亚衣av一区二区三区| 成人在线视频www| 日本美女爱爱视频| 99久久伊人精品| 国产亚洲欧美日韩高清| 最近2019中文字幕mv免费看| **日韩最新| 2018国产在线| 日本一区二区三区dvd视频在线| 中文字幕福利视频| 久久香蕉国产线看观看网| 成人激情自拍| 日本三区在线观看| 成人欧美一区二区三区| 亚洲欧美激情国产综合久久久| 5566日本婷婷色中文字幕97| 大色综合视频网站在线播放| 91日韩精品视频| 天天色综合成人网| 91成人高清| 国产日韩精品推荐| 全国精品久久少妇| 久久久久免费看| 一区二区三区www| 一区中文字幕电影| 激情内射人妻1区2区3区| 亚洲男人天堂av网| 精品视频一二三| 91在线看网站| 日韩电影免费在线看| 精品人妻在线播放| 中文字幕欧美精品日韩中文字幕| 人人爱人人干婷婷丁香亚洲| 欧美aⅴ在线观看| 伊人一区二区三区| 国产黄色在线| 国产精品嫩草在线观看| 久久电影网站中文字幕| wwwxxx亚洲| 欧美成年人视频网站| 欧美日韩123| 精品一区二区三区四区五区六区| 欧美色成人综合| 女厕盗摄一区二区三区| 免费观看国产视频在线|