如何将客户端响应的主体转换为某种类型的 Mono?
How to convert the body of a client response to a Mono of a certain type?
因此,我使用 WebClient 发送请求,在使用 exchange() 检索响应后,我需要将正文提取到 Object_1 的 Mono。该功能需要 return Mono>。通常你会使用 bodyToMono(SomeObject.class) 但这在这种情况下不起作用。
public Mono<Object1<Object2>> getAll(String someParam) {
return WebClient.create(this.baseUrl)
.get()
.uri(uriBuilder -> uriBuilder.path("/some_path")
.queryParam("someParam", someParam)
.build())
.exchange()
.flatMap(clientResponse -> clientResponse.bodyToMono(????));
}
我想弄清楚要在 bodyToMono() 中放入什么
我相信你可以通过 bodyToMono
that takes a ParameterizedTypeReference
的重载来做到这一点。
ParameterizedTypeReference<Object1<Object2>> typeRef =
new ParameterizedTypeReference<Object1<Object2>>() {};
// . . .
.flatMap(clientResponse -> clientResponse.bodyToMono(typeRef));
如果您愿意并且不觉得它太难阅读,您可以内联编写它:
.flatMap(clientResponse -> clientResponse.bodyToMono(
new ParameterizedTypeReference<Object1<Object2>>() {}));
因此,我使用 WebClient 发送请求,在使用 exchange() 检索响应后,我需要将正文提取到 Object_1 的 Mono。该功能需要 return Mono>。通常你会使用 bodyToMono(SomeObject.class) 但这在这种情况下不起作用。
public Mono<Object1<Object2>> getAll(String someParam) {
return WebClient.create(this.baseUrl)
.get()
.uri(uriBuilder -> uriBuilder.path("/some_path")
.queryParam("someParam", someParam)
.build())
.exchange()
.flatMap(clientResponse -> clientResponse.bodyToMono(????));
}
我想弄清楚要在 bodyToMono() 中放入什么
我相信你可以通过 bodyToMono
that takes a ParameterizedTypeReference
的重载来做到这一点。
ParameterizedTypeReference<Object1<Object2>> typeRef =
new ParameterizedTypeReference<Object1<Object2>>() {};
// . . .
.flatMap(clientResponse -> clientResponse.bodyToMono(typeRef));
如果您愿意并且不觉得它太难阅读,您可以内联编写它:
.flatMap(clientResponse -> clientResponse.bodyToMono(
new ParameterizedTypeReference<Object1<Object2>>() {}));