![](/img/trans.png)
[英]Spring cloud gateway AbstractErrorWebExceptionHandler
[英]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.