<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          微服務(wù)spring cloud gateway 路由參數(shù)和過濾策略配置(yaml和json格...

          共 10559字,需瀏覽 22分鐘

           ·

          2023-05-15 22:31

          ca9dffd293bb4a4ce02d3726b6270147.webp

          gateway 配置文件

                
                  [{
                
                
                      "id": "service-consumer",
                
                
                      "order": 1,
                
                
                      "predicates": [{
                
                
                          "args": {
                
                
                              "pattern": "/consumer/**"
                
                
                          },
                
                
                          "name": "Path"
                
                
                      }],
                
                
                      "filters":[{
                
                
                          "args":{
                
                
                  
                    
          "_genkey_0": "1" }, "name":"StripPrefix" }], "uri": "lb://service-consumer" },{ "id": "service-provider", "order": 1, "predicates": [{ "args": { "pattern": "/provider/**" }, "name": "Path" }], "filters":[{ "args":{
          "_genkey_0": "1" }, "name":"StripPrefix" }], "uri": "lb://service-provider" }]


          spring cloud gateway主要通過配置來實(shí)現(xiàn)其功能的,所以參數(shù)配置內(nèi)容比較多,而且比較復(fù)雜,這里對(duì)常用的一些配置做一個(gè)整理和記錄。

          1. 斷言Predicates

          Predicates主要起的作用是:配置路由匹配請(qǐng)求的規(guī)則。

          路由規(guī)則可以單獨(dú)使用,也可以組合使用。


          1.1?Path

          配置對(duì)于請(qǐng)求路徑的匹配規(guī)則,根據(jù)請(qǐng)求路徑判斷是否符合路由規(guī)則。

                  
                    
                      # yml配置,多個(gè)參數(shù)用逗號(hào)隔開
                    
                  
                  
                    - Path = /aa/**,/bb/**
                  
                  
                  
                    
                      # json配置
                    
                  
                  
                    {"name":"Path","args":{"pattern":"/aa/**","pattern1":"/bb/**"}}
                  
                

          1.2?Cookie

          配置對(duì)Cookie中值的匹配,第一個(gè)為key,第二個(gè)為value。

                  
                    yml配置
                  
                  
                    - Cookie = chocolate,ch.p
                  
                  
                  
                    json配置
                  
                  
                    {"name":"Cookie","args":{"_genkey_0":"chocolate","_genkey_1":"ch.p"}}
                  
                

          1.3 Header

          匹配Http請(qǐng)求中設(shè)置的內(nèi)容,http-header設(shè)置X-Request-Id:\d+可以匹配,第二個(gè)參數(shù)第二個(gè)參數(shù)是正則表達(dá)式

                  
                    yml配置
                  
                  
                    - Header = X-Request-Id,\d+
                  
                  
                  
                    json配置
                  
                  
                    {"name":"Header","args":{"_genkey_0":"X-Request-Id","_genkey_1":"\d+"}}
                  
                

          1.4 Host

          匹配Http請(qǐng)求Host,匹配所有host為**.wanglei.com的請(qǐng)求

                  
                    yml配置
                  
                  
                    - Host = **.wanglei.com
                  
                  
                  
                    json配置
                  
                  
                    {"name":"Host","args":{"_genkey_0":"**.wanglei.com"}}
                  
                

          1.5 Method

          匹配Http請(qǐng)求方法

                  
                    yml配置
                  
                  
                    - Method = GET
                  
                  
                  
                    json配置
                  
                  
                    {"name":"Method","args":{"_genkey_0":"GET"}}
                  
                


          1.6 Query

          匹配Http請(qǐng)求中的查詢參數(shù),請(qǐng)求中攜帶param1=value的請(qǐng)求可以匹配

                  
                    yml配置
                  
                  
                    - Query = param1,value
                  
                  
                  
                    json配置
                  
                  
                    {"name":"Query","args":{"_genkey_0":"param1","_genkey_1":"value"}}
                  
                

          1.6?RemoteAddr

          匹配請(qǐng)求中的RemoteAddr

                  
                    yml配置
                  
                  
                    - RemoteAddr = 192.168.1.1/24
                  
                  
                  
                    json配置
                  
                  
                    {"name":"RemoteAddr","args":{"_genkey_0":"192.168.1.1/24"}}
                  
                

          1.7?After

          設(shè)置時(shí)間之后可以訪問

                  
                    yml配置
                  
                  
                    - After = 2017-01-20T17:42:47.789+08:00[Asia/Shanghai]
                  
                  
                    
                      1
                    
                  
                  
                    json配置
                  
                  
                    {"name":"After","args":{"_genkey_0":"2017-01-20T17:42:47.789+08:00[Asia/Shanghai]"}}
                  
                

          1.8 Before

          設(shè)置時(shí)間之前可以訪問

                  
                    yml配置
                  
                  
                    - Before = 2017-01-20T17:42:47.789+08:00[Asia/Shanghai]
                  
                  
                  
                    json配置
                  
                  
                    {"name":"Before","args":{"_genkey_0":"2017-01-20T17:42:47.789+08:00[Asia/Shanghai]"}
                  
                

          1.9?Between

          設(shè)置時(shí)間段內(nèi)可以訪問

                  
                    yml配置
                  
                  
                    - Between = 2017-01-20T17:42:47.789+08:00[Asia/Shanghai],2017-01-21T17:42:47.789+08:00[Asia/Shanghai]
                  
                  
                  
                    json配置
                  
                  
                    {"name":"Between","args":{"_genkey_0":"2017-01-20T17:42:47.789+08:00[Asia/Shanghai]","_genkey_1":"2017-01-21T17:42:47.789+08:00[Asia/Shanghai]"}}
                  
                

          1.10 權(quán)重路由

          至少兩組以上路由可以配置權(quán)重路由,配置后會(huì)根據(jù)權(quán)重隨機(jī)訪問幾個(gè)路由

                  
                    yml配置
                  
                  
                    - Weight = service1,80
                  
                  
                  
                    json配置
                  
                  
                    {"name":"Weight","args":{"_genkey_0":"service1","_genkey_1":"80"}}
                  
                

          2. Filters

          過濾器實(shí)現(xiàn)對(duì)請(qǐng)求的過濾處理。

          2.1 路徑重寫

                  
                    yml配置
                  
                  
                    - RewritePath = /path/(?<segment>.*), /$\{segment}
                  
                  
                  
                    json配置
                  
                  
                    {"name":"RewritePath","args":{"_genkey_0":"/foo/(?<segment>.*)","_genkey_1":"/$\\{segment}"}}
                  
                

          2.2 添加請(qǐng)求頭

                  
                    yml配置
                  
                  
                    - AddRequestHeader = X-Request-Foo,Bar
                  
                  
                  
                    json配置
                  
                  
                    {"name":"AddRequestHeader","args":{"_genkey_0":"X-Request-Foo","_genkey_1":"Bar"}}
                  
                

          2.3 添加請(qǐng)求參數(shù)

                  
                    yml配置
                  
                  
                    - AddRequestParameter = foo,bar
                  
                  
                  
                    json配置
                  
                  
                    {"name":"AddRequestParameter","args":{"_genkey_0":"foo","_genkey_1":"bar"}}
                  
                

          2.4 添加響應(yīng)參數(shù)

                  
                    yml配置
                  
                  
                    - AddResponseHeader = X-Request-Foo,Bar
                  
                  
                  
                    json配置
                  
                  
                    {"name":"AddResponseHeader","args":{"_genkey_0":"X-Request-Foo","_genkey_1":"Bar"}}
                  
                

          2.5?路徑前綴增強(qiáng)(添加路徑)

          請(qǐng)求路徑/hello, 將會(huì)被替換為 /echo/hello

                  
                    yml配置
                  
                  
                    - PrefixPath = /echo
                  
                  
                  
                    json配置
                  
                  
                    {"name":"PrefixPath","args":{"_genkey_0":"/echo"}}
                  
                

          2.6?路徑前綴刪除

          請(qǐng)求/api/echo/wl,去除掉前面兩個(gè)前綴之后,最后轉(zhuǎn)發(fā)到目標(biāo)服務(wù)的路徑為/wl

                  
                    yml配置
                  
                  
                    - StripPrefix = 2
                  
                  
                  
                    json配置
                  
                  
                    {"name":"StripPrefix","args":{"_genkey_0":"2"}}
                  
                

          2.7?請(qǐng)求攜帶保留原始Host

                  
                    yml配置
                  
                  
                    - PreserveHostHeader
                  
                  
                  
                    json配置
                  
                  
                    {"name":"PreserveHostHeader","args":{}}
                  
                

          2.8?重定向

                  
                    yml配置
                  
                  
                    - RedirectTo = 302,http://wanglei.org
                  
                  
                  
                    json配置
                  
                  
                    {"name":"RedirectTo","args":{"_genkey_0":"302","_genkey_1":"http://wanglei.org"}}
                  
                

          2.9?斷路器

                  
                    yml配置
                  
                  
                    - name: Hystrix
                  
                  
                      args:
                  
                  
                        # 斷路后跳轉(zhuǎn)地址
                  
                  
                        name: echo
                  
                  
                    ??????fallbackUri:?forward:/echo
                  
                  
                  
                    json配置
                  
                  
                    {"name":"Hystrix","args":{"name":"echo","fallbackUri":"forward:/echo"}}
                  
                

          2.10?集成Redis原生支持請(qǐng)求限流

                  
                    yml配置
                  
                  
                     - name: RequestRateLimiter
                  
                  
                       args:
                  
                  
                         redis-rate-limiter.replenishRate: 10  
                  
                  
                         redis-rate-limiter.burstCapacity: 20
                  
                  
                  
                    json配置
                  
                  
                    {"name":"RequestRateLimiter","args":{"redis-rate-limiter.replenishRate":"10","redis-rate-limiter.burstCapacity":"20"}}
                  
                

          2.11?刪除請(qǐng)求頭屬性

                  
                    yml配置
                  
                  
                    - RemoveRequestHeader = X-Request-echo
                  
                  
                  
                    json配置
                  
                  
                    {"name":"RemoveRequestHeader","args":{"_genkey_0":"X-Request-echo"}}
                  
                

          2.12?刪除響應(yīng)頭屬性

                  
                    yml配置
                  
                  
                    - RemoveResponseHeader = X-Request-echo
                  
                  
                  
                    json配置
                  
                  
                    {"name":"RemoveResponseHeader","args":{"_genkey_0":"X-Request-echo"}}
                  
                

          2.13?重寫響應(yīng)頭

          將請(qǐng)求 /888?user=ford&password=omg!what&flag=true, 改為 /888?user=ford&password=***&flag=true

                  
                    yml配置
                  
                  
                    - RewriteResponseHeader = X-Response-Foo,password=[^&]+,password=***
                  
                  
                  
                    json配置
                  
                  
                    {"name":"RewriteResponseHeader","args":{"_genkey_0":"X-Response-Foo","_genkey_1":"password=[^&]+","_genkey_2":"password=***"}}
                  
                

          2.14?重設(shè)請(qǐng)求路徑

          請(qǐng)求/echo/aa,在接下來的處理中被改為/aa

                  
                    yml配置
                  
                  
                    - SetPath =/{segment}
                  
                  
                  
                    json配置
                  
                  
                    {"name":"SetPath","args":{"_genkey_0":"/{segment}"}}
                  
                

          2.15 設(shè)置響應(yīng)頭

          在接下來的處理中修改響應(yīng)頭X-Response-Foo為Bar

                  
                    yml配置
                  
                  
                    - SetResponseHeader =X-Request-Foo,Bar
                  
                  
                  
                    json配置
                  
                  
                    {"name":"SetResponseHeader","args":{"_genkey_0":"X-Response-Foo","_genkey_1":"Bar"}}
                  
                

          2.16 設(shè)置Http狀態(tài)

                  
                    yml配置
                  
                  
                    - name: SetStatus
                  
                  
                      args:
                  
                  
                        status: 401
                  
                  
                  
                    json配置
                  
                  
                    {"name":"SetStatus","args":{"_genkey_0":"302"}}
                  
                

          2.17 設(shè)置文件傳輸大小

                  
                    yml配置
                  
                  
                     - name: RequestSize
                  
                  
                       args:
                  
                  
                         maxSize: 5000000
                  
                  
                  
                    json配置
                  
                  
                    {"name":"RequestSize","args":{"_genkey_0":"5000000"}}
                  
                



          瀏覽 114
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色色激情网 | 污的网站在线观看豆花视频 | 青娱乐国内亚洲 | 天天干天天噜天天操 | 操操操免费视频 |