欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

SpringCloud中怎么使用Gateway配置路由動(dòng)態(tài)

Spring Cloud 中怎么使用Gateway配置路由動(dòng)態(tài),很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)為客戶提供專業(yè)的網(wǎng)站設(shè)計(jì)、做網(wǎng)站、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、手機(jī)網(wǎng)站開發(fā)等網(wǎng)站方面業(yè)務(wù)。

8. 根據(jù)配置文檔配置路由

Spring Cloud Gateway的配置由一系列的“ RouteDefinitionLocator”接口實(shí)現(xiàn)類控制,此接口如下所示:

public interface RouteDefinitionLocator {
	Flux<RouteDefinition> getRouteDefinitions();
}

默認(rèn)情況下,通過(guò)Spring Boot的@ConfigurationProperties機(jī)制,Spring Cloud Gateway 使用PropertiesRouteDefinitionLocator從配置文件中加載路由的配置信息。之前的路由配置中,使用了一種快捷的配置方式,也可以指定具體的參數(shù)名,如下面的兩種配置方式效果是完全一樣的:

spring:
  cloud:
    gateway:
      routes:
      - id: setstatus_route
        uri: http://example.org
        filters:
        - name: SetStatus
          args:
            status: 401
      - id: setstatusshortcut_route
        uri: http://example.org
        filters:
        - SetStatus=401

在一些網(wǎng)關(guān)的應(yīng)用場(chǎng)景中,使用屬性配置的方式就可以了,但是在一些生產(chǎn)環(huán)境中,有一些路由配置信息可能是來(lái)自別的地方,比如數(shù)據(jù)庫(kù)。在將來(lái)的Spring Cloud Gateway版本中,也會(huì)添加一些基于數(shù)據(jù)庫(kù)的RouteDefinitionLocator實(shí)現(xiàn)類,比如redis,MongoDB。

8.1 Fluent Java Routes API (使用Java 路由API 代碼添加路由配置)

在RouteLocatorBuilder中定義的一些 Fluent API,使用它可以在Java代碼中配置相關(guān)的路由信息,如下面代碼所示:

// static imports from GatewayFilters and RoutePredicates
@Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder, AddRequestHeaderGatewayFilterFactory throttle) {
        NameValueConfig requestHeader = new NameValueConfig();
        requestHeader.setName("routes-a");
        requestHeader.setValue("yes");
        return builder.routes()
                .route(r -> r.host("localhost:8080").and().path("/routes-api/a/**")
                    .filters(f ->{
                            f.addResponseHeader("X-TestHeader", "foobar");
                            return f.redirect(HttpStatus.MOVED_PERMANENTLY.value(), "http://www.xinyues.com");
                            })
                    .uri("http://localhost:8080").id("custom-1")
                )
                .route(r -> r.path("/routes-api/b/**")
                    .filters(f ->
                            f.addResponseHeader("X-AnotherHeader", "baz"))
                    .uri("http://localhost:8080").id("custom-2")
                )
                .route(r -> r.order(0)
                    .host("localhost:8080").and().path("/routes-api/c/**")
                    .filters(f -> f.filter(throttle.apply(requestHeader)))
                    .uri("http://localhost:8080").id("custom-3")
                )
                .build();
    }

這段代碼是我自己參考原文檔實(shí)現(xiàn)的,原文檔上面那個(gè)ThrottleGatewayFilterFactory找不到。這里我添加了自定義 的routes Id,可以從源碼中查看:https://gitee.com/wgslucky/SpringCloud,啟動(dòng)源碼項(xiàng)目,在瀏覽器中輸入:http://localhost:8080/actuator/gateway/routes,可以看到網(wǎng)關(guān)加載的所有的路由信息,可以看到代碼中路由id為custom-x的路由信息,說(shuō)明在Java添加的路由配置與在配置文件中添加的路由配置都被加載到了。如果瀏覽器安裝了Json插件更直觀一些。這是一個(gè)路由的配置Json數(shù)組。根據(jù)上面代碼中的路由配置,在瀏覽器中輸入:http://localhost:8080/routes-api/a/test,可以看到成功跳轉(zhuǎn)到了目標(biāo)網(wǎng)站,說(shuō)明路由配置成功了。 這種形式也可以添加一些自定義的Predicate判斷,在RouteDefinitionLocator中定義的Predicates可以使用邏輯and。使用Fluent Java Api,可以使用and(),or()和negate()操作Predicate類。例如上面代碼中的第一個(gè)路由就使用and()添加了兩個(gè)Predicate。

8.2 DiscoveryClient Route Definition Locator 使用服務(wù)發(fā)現(xiàn)客戶端定義路由信息

Spring Cloud Gateway可以使用服務(wù)發(fā)現(xiàn)客戶端接口DiscoveryClient,從服務(wù)注意中心獲取服務(wù)注冊(cè)信息,然后配置相應(yīng)的路由。注意,需要在配置中添加如下配置開啟這個(gè)功能:

spring.cloud.gateway.discovery.locator.enabled=true

然后確保已引入DiscoveryClient的實(shí)現(xiàn)類的服務(wù)發(fā)現(xiàn)客戶端依賴,比如Eureka,Consul或Zookeeper。

8.2.1 Configuring Predicates and Filters For DiscoveryClient Routes 為路由信息配置斷言和過(guò)濾器

默認(rèn)情況下,通過(guò)服務(wù)發(fā)現(xiàn)客戶端DiscoveryClient自動(dòng)配置的路由信息中,只包括一個(gè)默認(rèn)的Predicate和Filter。默認(rèn)的Predicate是一個(gè)Path Predicate,模式是 /serviceId/**,serviceId就是從服務(wù)發(fā)現(xiàn)客戶端中獲取的服務(wù)ID。默認(rèn)的Filter是一個(gè)重寫路徑過(guò)濾器,它的正則表達(dá)式為:/serviceId/(?<remaining>.*),它的作用是將請(qǐng)求路徑中的serviceId去掉,變?yōu)?code>/(?<remaining>.*),如果想要添加自定義的Predicate和Filters,可以這樣配置:spring.cloud.gateway.discovery.locator.predicates[x]spring.cloud.gateway.discovery.locator.filters[y],當(dāng)使用這種配置方式時(shí),不會(huì)再保留原來(lái)默認(rèn)的Predicate和Filter了,如果你還需要原來(lái)的配置,需要手動(dòng)添加到配置中,如下面所示: application.properties

spring.cloud.gateway.discovery.locator.predicates[0].name: Path
spring.cloud.gateway.discovery.locator.predicates[0].args[pattern]: "'/'+serviceId+'/**'"
spring.cloud.gateway.discovery.locator.predicates[1].name: Host
spring.cloud.gateway.discovery.locator.predicates[1].args[pattern]: "'**.foo.com'"
spring.cloud.gateway.discovery.locator.filters[0].name: Hystrix
spring.cloud.gateway.discovery.locator.filters[0].args[name]: serviceId
spring.cloud.gateway.discovery.locator.filters[1].name: RewritePath
spring.cloud.gateway.discovery.locator.filters[1].args[regexp]: "'/' + serviceId + '/(?<remaining>.*)'"
spring.cloud.gateway.discovery.locator.filters[1].args[replacement]: "'/${remaining}'"

application.yml

spring: 
  cloud: 
    gateway: 
      discovery:
        locator:
          enabled: true
          predicates:
          - name: Path
            args:
              pattern: "'/'+serviceId+'/test'"
          filters: 
          - name: RedirectTo
            args:
              status: 301
              url: "'http://www.xinyues.com'"

需要注意的是,在這些配置中,所有的配置的值都是會(huì)被Spel解析的,所以如果是字符串的話,需要使用引號(hào)。比如,application.yml中,如果配置成這樣:url: http://www.xinyues.com會(huì)報(bào)錯(cuò)的,詳細(xì)見:https://www.cnblogs.com/wgslucky/p/11743740.html

application.yml 這種配置是保留原來(lái)的默認(rèn)的Predicate和Filter

spring: 
  cloud: 
    gateway: 
      discovery:
        locator:
          enabled: true
          predicates:
          - name: Path
            args:
              pattern: "'/'+serviceId+'/**'"
          filters: 
          - name: AddRequestHeader
            args: 
             name: "'foo'"
             value: "'bar'"
          - name: RewritePath
            args:
              regexp: "'/' + serviceId + '/(?<remaining>.*)'"
              replacement: "'/${remaining}'"

可以看到所有的字符串必須在引號(hào)的單引號(hào)內(nèi)。

Spring Cloud 中怎么使用Gateway配置路由動(dòng)態(tài)

手機(jī)支架懶人支架桌面ipad平板電腦創(chuàng)意便攜式支架多功能直播抖音拍照落地床頭直播車載折疊支撐架

8.2.2 源碼實(shí)現(xiàn)

到這里下載源碼:https://gitee.com/wgslucky/SpringCloud

  1. 修改application.yml,激活discoveryclient配置文件

spring:
  profiles:
    active:
    - discoveryclient
  1. 啟動(dòng)spring-cloud-gateway項(xiàng)目

  2. 啟動(dòng)spring-cloud-app-a項(xiàng)目

然后瀏覽器中輸入:http://localhost:8080/actuator/gateway/routes,可以看到已添加成功定義好到spring-cloud-app-a服務(wù)的路由信息了,如下所示: Spring Cloud 中怎么使用Gateway配置路由動(dòng)態(tài) 可以看到里面有一個(gè)默認(rèn)的filter和predicate。而且可以看出,在配置文件中配置的路由信息,java代碼中添加的路由配置信息,都加載到網(wǎng)關(guān)中,說(shuō)明這三種配置路由信息的方式是可以一起使用的。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

網(wǎng)站欄目:SpringCloud中怎么使用Gateway配置路由動(dòng)態(tài)
鏈接地址:http://aaarwkj.com/article26/jegdcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、微信公眾號(hào)服務(wù)器托管、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)
亚洲国产精品高清久久| 久久一二三四区中文字幕| 亚洲国产不卡一区二区三区| 女人的天堂av免费在线观看| 老牛av一区二区三区| 亚洲欧美综合另类久久| 一区二区尤物区亚洲国产精品区| 午夜福利中文字幕在线亚洲| 欧美一级特黄大片做受另类| 五月婷婷六月丁香伊人网| 欧美高清一区二区三区不卡| 成人高清在线观看91| 国产精品观看在线亚洲人成网| 亚洲国产成在人网站天堂| 国产av日韩精品一区二区三区| 亚洲国产日韩精品久久| 欧美日韩午夜久久免费| 亚洲av乱码毛片在线播放| 少妇精品久久久一区二区三区 | 91中文字幕精品一区二区| 国产另类极品熟女露脸自拍| 国产午夜亚洲精品福利| 日韩亚洲在线中文字幕| 人人看男人的天堂东京| 欧美日韩男女性生活视频| av影片在线观看不卡| av剧情免费在线观看| av黄色资源在线观看| 精品视频美女肉体亚洲| 性感美女国产av一区二区三区| 色噜噜噜欧美人妻色综合| 99久久精彩免费视频| 日韩av一区二区免费在线观看| 国产一区二区三区百合| 亚洲国产精品一区二区首页| 久久人婷婷人人澡人人爽| 精品国产亚洲av剧情| 欧美日韩性性在线观看| 91精品一区二区三区91人妻| 亚洲国产一区二区高清| 国产女主播高清在线视频|