通过Springs`WebClient`进行API调用,但忽略结果的正确方式是什么? [英] What is the proper way to make an api call via springs `WebClient`, but ignore the result?

查看:11
本文介绍了通过Springs`WebClient`进行API调用,但忽略结果的正确方式是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

通过SpringsWebClient进行API调用,但忽略结果的正确方式是什么?ClientResponse对象特别要求我必须对结果做一些操作...

Docs:

注意:当通过WebClient exchange()方法获得对ClientResponse的访问权限时,您必须始终使用Body或toEntity方法之一来确保释放资源并避免HTTP连接池的潜在问题。如果不需要响应内容,可以使用bodyToMono(Void.class)。但是,请记住,如果响应确实包含内容,则连接将关闭,并且不会放回到池中。

我是否可以进行WebClient调用并忽略结果?或者是否有一个泛型Catch All"Body或toEntity方法",我可以使用它然后忽略它?

推荐答案

在Spring Framework5.2之前,使用WebClient#exchange()方法并直接处理Mono<ClientResponse>可能相当复杂,或者会导致潜在的内存泄漏。

从Spring Framework5.2开始,开发人员可以更轻松地完成此操作,并且exchange()方法已弃用。

Mono<ResponseEntity<Void>> response = webClient.put()
     .uri("https://example.org/book/123")
     .retrieve()
     .toBodilessEntity();

Spring将读取响应正文(如果存在)并释放数据缓冲区,然后将连接返回到池。它正在确保没有内存泄漏,包括在使用额外的反应堆操作员时。

这篇关于通过Springs`WebClient`进行API调用,但忽略结果的正确方式是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆