如何解决无法使用上下文路径将请求转发到URI
我无法将请求转发到具有contextpath的URI。
例如,我请求使用以下内容的Spring云网关服务器
http://localhost:1010/mygateway/server/date
我希望它能转发到
http://myapiserver.com/xyzapi/v1/server/date
但是它给了我404
@Bean
public RouteLocator customrouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("api-server-date",r -> r.host("**")
.and()
.path("/mygateway/server/date")
.filters(f -> f.stripPrefix(1))
.uri("https://myapiserver.com/xyzapi/v1"))
.build();
}
当我将配置更改为此时,它将起作用
@Bean
public RouteLocator customrouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("api-server-date",r -> r.host("**")
.and()
.path("/mygateway/xyzapi/v1/server/date")
.filters(f -> f.stripPrefix(1))
.uri("https://myapiserver.com"))
.build();
}
我不知道我提供的配置错误。应该可以。
我只想使用
https://myapiserver.com/xyzapi/v1
作为我的URI。意味着到我的Spring Cloud Gateway服务器的所有传入流量都应在附加传入URL后转发到该URL
请提示出什么问题了?还是Spring Cloud Gateway无法实现?
解决方法
我认为您想要的(看在线样本)是:
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
String requestHandlerUrl = "http://myapiserver.com/xyzapi/v1/server/date";
return builder.routes()
.route("api-server-date",r -> r.host("**")
.and()
.path("/mygateway/server/date")
.filters(f -> f.stripPrefix(1))
.uri(requestHandlerUrl)
.build();
}
...,以便将对应用程序部署到的任何主机的请求转发/传递到requestHandlerUrl
作为目的地。
看起来/mygateway/server/date
是您实际要处理请求的URL的“快捷方式”或别名。
此处有一些示例:https://cloud.spring.io/spring-cloud-gateway/multi/multi__configuration.html#_fluent_java_routes_api
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。