簡體   English   中英

Spring 雲網關重定向

[英]Spring cloud gateway redirection

我有一個簡單的要求,即用新的 uri 替換舊的 uri,以便客戶端仍然可以調用舊的 uri

我的 API 網關在端口 8090 上運行,它連接到 Eureka 服務器

這是網關中的屬性文件

spring.application.name=api-gateway-server
server.port=8090
eureka.client.serviceUrl.defaultZone=http://localhost:9100/eureka

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

spring.cloud.gateway.discovery.locator.lower-case-service-id=true

logging.level.root=DEBUG

通過網關的舊 API 是

http://localhost:8090/currency-conversion-service/currency-convertor-feign/from/USD/to/INR/456

其中 'currency-conversion-service' 是 Eureka 中目標應用程序的名稱

在此處輸入圖像描述

並且貨幣兌換服務應用程序中的 URI 已更改為

/currency-convertor-v2/from/USD/to/INR/456

/currency-convertor-feign/from/USD/to/INR/456

所以我想要的是當客戶端點擊 API 網關 URL

http://localhost:8090/currency-conversion-service/currency-convertor-feign/from/USD/to/INR/456

請求被重定向到

/currency-convertor-v2/from/USD/to/INR/456

在貨幣兌換服務中

這是我試圖在網關應用程序中編寫的代碼

package com.kingshuk.springcloudprojects.apigatewayserver;

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ApiRoutingConfiguration {

    @Bean
    public RouteLocator applicationRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route(p -> p.path("/currency-convertor-feign/**")
                        .filters(gatewayFilterSpec -> gatewayFilterSpec
                                .rewritePath("/currency-convertor-feign/(?<remaining>.*)"
                                , "/currency-convertor-v2/${remaining}}"))
                        .uri("http://currency-conversion-service/"))
                .build();
    }
}

但它不起作用。 不斷出現錯誤。 API 網關日志中沒有打印任何異常。

我對 spring 雲網關有點陌生,所以如果我能在這方面得到一些幫助,那就太好了。

謝謝

更新:

它現在可以根據spencergibb的建議進行以下代碼調整。 感謝你的幫助...!!

@Bean
    public RouteLocator applicationRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route(p -> p.path("/currency-conversion-service/currency-convertor-feign/**")
                        .filters(gatewayFilterSpec -> gatewayFilterSpec
                                .rewritePath("/currency-conversion-service/currency-convertor-feign/(?<remaining>.*)"
                                , "/currency-convertor-v2/${remaining}"))
                        .uri("lb://currency-conversion-service/"))
                .build();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM