配置文件中配置了路由ip,但我在拦截器中更改了请求url,
//获取域名后的path
String rawPath = req.getURI().getRawPath();
URI uri = UriComponentsBuilder.fromHttpUrl(enurl+"/test/getId").build().toUri();
//重新封装request对象
ServerHttpRequest request = req.mutate().uri(uri).build();
// Route oldroute = exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR);
// //从新设置Route地址
// Route route =
// Route.async().asyncPredicate(oldroute.getPredicate()).filters(oldroute.getFilters()).id(oldroute.getId())
// .order(oldroute.getOrder()).uri(uri).build();
URI mergedUrl = UriComponentsBuilder.fromUri(uri)
.scheme(uri.getScheme())
.host(uri.getHost())
.port("8080")
.build()
.toUri();
//NettyRoutingFilter 最终会从GATEWAY_REQUEST_URL_ATTR 取出uri对象进行http请求,所以这里需要将新的对象覆盖进去
exchange.getAttributes().put(ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR,mergedUrl);
return chain.filter(exchange.mutate().request(request).build()).then(Mono.fromRunnable(() -> {
//请求完成回调方法 可以再此完成计算请求耗时等操作
}));
这样就导致请求多次,但被请求接口并无反应;
当我把配置文件中路由更换成该接口的ip,就可以请求到接口