是否有可能将Flux传递到webClient POST的主体?



我有一个这样的端点:

@PostMapping("/products")
Flux<Product> getProducts(@RequestBody Flux<String> ids) {
return Flux...
}

在我的客户端,我想使用这个端点,但不确定如何在主体中传递一个Flux of String(我不想让它成为一个列表)

Flux<Product> getProducts(Flux<String> ids) {
return webClient.post().uri("/products")
.body(/* .. how should I do here? ..*/)
.retrieve()
.bodyToFlux(Product.class);
}

实际上,您可以将Flux传递给WebClient上的.body()方法

Flux<Person> personFlux = ... ;
Mono<Void> result = client.post()
.uri("/persons/{id}", id)
.contentType(MediaType.APPLICATION_STREAM_JSON)
.body(personFlux, Person.class)
.retrieve()
.bodyToMono(Void.class);

示例取自Spring参考文档

您想要使用的body()方法的变体是:

<T,P extends org.reactivestreams.Publisher<T>> WebClient.RequestHeadersSpec<?> body(P publisher,
              Class<T> elementClass)

此方法的相关JavaDoc

最新更新