最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springcloud gateway設(shè)置context-path的操作

 更新時(shí)間:2021年07月15日 14:42:18   作者:烤鴨的世界我們不懂  
這篇文章主要介紹了springcloud gateway設(shè)置context-path的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

今天說一下遇到的問題,關(guān)于 springcloud gateway 設(shè)置 context-path 的問題。

1.使用場(chǎng)景

由于沒有申請(qǐng)二級(jí)域名,網(wǎng)關(guān)使用的地址是 xxx.com/gateway/ 用nginx轉(zhuǎn)發(fā)的時(shí)候 /gateway/ 也被用來尋址。

gateway 沒辦法設(shè)置 context-path ,針對(duì)我這個(gè)場(chǎng)景有3個(gè)解決方案。

2.解決方案

2.1 增加本地路由(有一個(gè)網(wǎng)址指向自己,這里就是 /gateway)

spring:
  cloud:
    gateway:
      routes:
      # 網(wǎng)關(guān)本身沒有contextPath,通過自己轉(zhuǎn)發(fā)自己,達(dá)到能處理contextPath
      - id: self
        uri: http://localhost:${server.port}
        predicates:
        - Path=/${spring.application.name}/**
        filters:
        - StripPrefix=1
        order: -11000

這種方式會(huì)丟失請(qǐng)求,暫時(shí)沒考慮原因,就pass了。

2.2 增加過濾器,改寫路徑

ApiFilter.java

package com.yiche.ballast.filter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.web.server.WebFilter;
import reactor.core.publisher.Mono; 
 
@Configuration
public class ApiFilter {
    @Value("${spring.cloud.gateway.api-prefix:/gateway}")
    private String prefix; 
    @Bean
    @Order(-1)
    public WebFilter apiPrefixFilter() {
        return (exchange, chain) -> {
            ServerHttpRequest request = exchange.getRequest();
 
            String path = request.getURI().getRawPath();
            if (!path.contains(prefix)) {
                ServerHttpResponse response = exchange.getResponse();
                response.setStatusCode(HttpStatus.BAD_GATEWAY);
 
                DataBuffer buffer = response
                        .bufferFactory()
                        .wrap(HttpStatus.BAD_GATEWAY.getReasonPhrase().getBytes());
                return response.writeWith(Mono.just(buffer));
            }
            String newPath = path.replaceFirst(prefix, "");
            ServerHttpRequest newRequest = request.mutate().path(newPath).build();
 
            return chain.filter(exchange.mutate().request(newRequest).build());
        };
    }
}

這樣/gateway 請(qǐng)求進(jìn)來之后,轉(zhuǎn)發(fā)到routers 的時(shí)候會(huì)把 /gateway去掉,缺點(diǎn)是每個(gè)請(qǐng)求進(jìn)來都需要對(duì)路徑處理一次。

能配置的盡量不寫代碼。

2.3 修改配置,在所有的router路徑前加前綴(這里就是都加上 /gateway)

spring:
    cloud:
        gateway:
            routes:
            - id: api-route
              filters:
                - StripPrefix=1
              predicates:
                - name: Path
                  args[pattern]: /gateway/api/**
              uri: lb://xxx-api

偷懶的做法,路由多的時(shí)候也挺難受。

現(xiàn)在路由不多,選擇了第三種方式??锤髯缘膱?chǎng)景選擇吧。

springcloud 的gateway踩坑

添加了路由規(guī)則的配置以后,SpringCloud無法正常啟動(dòng),啟動(dòng)的時(shí)候報(bào)錯(cuò)

1、配置文件中開啟debug=true模式

錯(cuò)誤信息顯示缺少javax.validation.ValidatorException類;

2、在pom文件中添加hibernate-validator(以及所有相關(guān)依賴)

3、結(jié)果仍舊報(bào)錯(cuò),此時(shí)錯(cuò)誤信息:

不能為空,之前是配置在yml文件中,后來?yè)Q成了properties,問題就解決了;

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java BigDecimal解決double精度丟失的問題

    Java BigDecimal解決double精度丟失的問題

    我們?cè)谌粘i_發(fā)中, 有很多時(shí)候會(huì)遇到小數(shù)(double類型)精確計(jì)算,本文主要介紹了Java BigDecimal解決double精度丟失的問題,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • springboot中jsp配置tiles全過程

    springboot中jsp配置tiles全過程

    這篇文章主要介紹了springboot中jsp配置tiles全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • zuul過濾器中轉(zhuǎn)發(fā)請(qǐng)求頭的解決方案

    zuul過濾器中轉(zhuǎn)發(fā)請(qǐng)求頭的解決方案

    這篇文章主要介紹了zuul過濾器中轉(zhuǎn)發(fā)請(qǐng)求頭的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring中利用SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)配置的示例

    Spring中利用SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)配置的示例

    定時(shí)任務(wù)是一項(xiàng)至關(guān)重要的功能,它們使得我們能夠按照預(yù)定的時(shí)間執(zhí)行特定的任務(wù),本文主要介紹了Spring中利用SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)配置的示例,感興趣的可以了解一下
    2024-05-05
  • Java8并發(fā)新特性CompletableFuture

    Java8并發(fā)新特性CompletableFuture

    這篇文章主要介紹了Java8并發(fā)新特性CompletableFuture,CompletableFuture針對(duì)Future接口做了改進(jìn),相比Callable/Runnable接口它支持多任務(wù)進(jìn)行鏈?zhǔn)秸{(diào)用、組合、多任務(wù)并發(fā)處理,下面文章更多相關(guān)內(nèi)容得介紹,需要的小伙伴可以參考一下
    2022-06-06
  • java 使用ImageIO.writer從BufferedImage生成jpeg圖像遇到問題總結(jié)及解決

    java 使用ImageIO.writer從BufferedImage生成jpeg圖像遇到問題總結(jié)及解決

    這篇文章主要介紹了java 使用ImageIO.writer從BufferedImage生成jpeg圖像遇到問題總結(jié)及解決的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • JAVA基礎(chǔ)之基本數(shù)據(jù)類型全面解析

    JAVA基礎(chǔ)之基本數(shù)據(jù)類型全面解析

    下面小編就為大家?guī)硪黄狫AVA基礎(chǔ)之基本數(shù)據(jù)類型全面解析。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • Java實(shí)現(xiàn)對(duì)稱加密DES和AES的示例代碼

    Java實(shí)現(xiàn)對(duì)稱加密DES和AES的示例代碼

    這篇文章主要介紹了如何使用Java實(shí)現(xiàn)采用對(duì)稱密碼算法的應(yīng)用軟件,所用算法包括DES算法和AES算法,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-04-04
  • SpringBoot+Redis使用AOP防止重復(fù)提交的實(shí)現(xiàn)

    SpringBoot+Redis使用AOP防止重復(fù)提交的實(shí)現(xiàn)

    本文主要介紹了SpringBoot+Redis使用AOP防止重復(fù)提交的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • java實(shí)現(xiàn)Excel的導(dǎo)入導(dǎo)出

    java實(shí)現(xiàn)Excel的導(dǎo)入導(dǎo)出

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)Excel的導(dǎo)入導(dǎo)出,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評(píng)論

道孚县| 福清市| 遂川县| 扶风县| 石家庄市| 荆门市| 承德县| 通榆县| 惠州市| 印江| 凤阳县| 临邑县| 扬州市| 灵武市| 临沧市| 新安县| 治县。| 江西省| 开化县| 皮山县| 沈丘县| 嘉定区| 米林县| 石门县| 清涧县| 扎赉特旗| 花莲县| 马关县| 宁国市| 嘉鱼县| 宜宾市| 福贡县| 阳泉市| 安义县| 漯河市| 安乡县| 湘乡市| 阳西县| 呈贡县| 永福县| 凌云县|