通过Springs`WebClient`进行API调用,但忽略结果的正确方式是什么? [英] What is the proper way to make an api call via springs `WebClient`, but ignore the result?
本文介绍了通过Springs`WebClient`进行API调用,但忽略结果的正确方式是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
通过SpringsWebClient
进行API调用,但忽略结果的正确方式是什么?ClientResponse
对象特别要求我必须对结果做一些操作...
注意:当通过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屋!
查看全文