JavaSpring云网关重定向
我有一个简单的要求,就是用新的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
其中,“货币兑换服务”是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网关日志中不会打印任何异常
我对SpringCloudGateway有点陌生,所以如果我能在这方面得到一些帮助,那就太好了
谢谢
# 1 楼答案
更新:
它现在可以根据spencergibb的建议进行以下代码调整。感谢你的帮助