GateWay+WebFlux 过滤器路由转发,需要返回值的时候,出现重复请求

文章讨论了在gateway的过滤器中,通过WebClient发送请求时遇到的问题,即无法正确获取接口返回值。解决方法是解析ServerHttpRequest的数据流,将其转换为Byte[]数组并进一步转成String输出。在处理WebClientResponseException时,使用`getResponseBodyAsString`方法获取返回内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在gateway的过滤器中根据配置走两套路由,路由转发之后,在对接口请求的内容进行处理时,发现无法获取接口返回值,要么出现多个请求,要么就是能获取接口成功时候的返回值无法获取失败的时候的返回值

解决方案:解析 ServerHttpRequest 数据流,将数据写入到 byte [] 数组中,在转换成 String 后就可以正常输出

Mono<DataBuffer> stringMono = webClientBuilder.build(). post().uri("xxxx") .retrieve().bodyToMono(DataBuffer.class) .doOnError(WebClientResponseException.class, err->{ String errMsg = err.getResponseBodyAsString(StandardCharsets.UTF_8);

throw new runtimeException(errMsg);

});

return exchange.getResponse().writeWith(stringMono);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值