首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Webflux WebClient

Spring Webflux WebClient
EN

Stack Overflow用户
提问于 2017-11-25 14:07:14
回答 4查看 2.2K关注 0票数 2

我真的不知道如何正确地将下面的调用转换为spring webflux webclient。

userIds是一个列表,我可以使用以下语法调用该服务,但我无法使用Spring WebFlux WebClient实现这一功能。如果你们中有谁知道怎么做,请帮帮我。

代码语言:javascript
复制
String url = "http://profile.service.com/v1/profiles/bulk";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));

ResponseEntity<List<MiniProfile>> responseEntity;
try {
    responseEntity = restTemplate.exchange(url, HttpMethod.POST, new 
    HttpEntity(userIds, headers), new 
    ParameterizedTypeReference<List<MiniProfile>>() {});
} catch (RestClientException e) {
    responseEntity = new ResponseEntity<List<MiniProfile>>(HttpStatus.OK);
}

return responseEntity.getBody();

这是我把它翻译成Webflux WebClient的方法:

代码语言:javascript
复制
Flux<String> flux = Flux.fromIterable(userIds);
return readWebClient.post().uri("/v1/profiles/bulk")
      .body(BodyInserters.fromPublisher(flux, String.class))
      .retrieve().bodyToFlux(MiniProfile.class);
EN

回答 4

Stack Overflow用户

发布于 2018-05-18 12:56:04

您不应该将列表更改为flux,您应该将其作为列表发送,如下所示

代码语言:javascript
复制
return readWebClient.post()
  .uri("/v1/profiles/bulk")
  .syncBody(userIds)
  .retrieve()
  .bodyToFlux(new ParameterizedTypeReference<List<MiniProfile>>() {})
  .flatMapIterable(Function.identity());

此代码未经过测试,但原理是相同的

票数 1
EN

Stack Overflow用户

发布于 2019-12-06 15:40:54

使用.bodyValue(userIds).syncBody(userIds) (已弃用)代替带有正文插入器的正文

票数 0
EN

Stack Overflow用户

发布于 2021-01-21 14:41:08

**您可以参考下面提到的代码片段**

代码语言:javascript
复制
WebClient.post().uri(endPointUrl)
           .contentType(MediaType.APPLICATION_XML)
          .body(Mono.just(xmlEntity), String.class)
          .retrieve()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47483138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档