【问题标题】:How to call a microservice to fetch data in spring webfluxspring webflux如何调用微服务获取数据
【发布时间】:2021-01-07 20:38:41
【问题描述】:

我想在 Spring Flux 中使用 webclient 从另一个服务调用微服务。但是,我无法正确编写代码。您能否建议如何调用其他服务。请在下面找到我的代码。

我需要调用以下服务

public Mono<ServerResponse> load(ServerRequest res){
    String c1name = res.pathVariable("cust");
    String c2name = res.queryParam("cl").orElse("");
    String oname = res.queryParam("ol").orElse("");
    return res.body()
}
public Mono<ResponseEntity<Void>> ftpFileSend(MultipartFile fileData, String cust, MultiValueMap<String,String) qpar {
    MultiValueMap<String,String> qpar=new LinkedMultiValueMap<String,String>();
       qpar.add("name","spring");
    MultiValueMap<String,Object> body=new LinkedMultiValueMap<String,Object>();
    String url="http://localhost:8088/"+ cust+"/load";

    try {
        body.add("file", fileData.getBytes());
    } catch (IOException e) {
        return Mono.error(e);   // <-- note how to create an error signal
    }


    return webClient
                .post()
                .uri(uriBuilder -> uriBuilder.path(url).queryParams(qpar).build() )
                .contentType(MediaType.MULTIPART_FORM_DATA)
                .body(BodyInserters.fromMultipartData(body))
                .retrieve()
                .toBodilessEntity();
}

【问题讨论】:

    标签: spring webclient spring-webflux


    【解决方案1】:

    嗯,如果您提供了一些错误日志,那就太好了。无论如何,如果您想创建一个多部分主体,则有一个构建器,MultipartBodyBuilder(在 org.springframework.http.client.MultipartBodyBuilder 中)。

    示例用法如下,

    MultipartBodyBuilder builder = new MultipartBodyBuilder();
    builder.part("file", new MultipartFileResource(fileData));
    MultiValueMap<String, HttpEntity<?>> multipartBody = builder.build();
    

    然后在 webClient 调用中使用这个multipartBody

    return webClient
        ...
        .body(BodyInserters.fromMultipartData(multipartBody))
        .retrieve()
        .toBodilessEntity();
    

    【讨论】:

      猜你喜欢
      • 2020-04-10
      • 2020-07-06
      • 2020-12-19
      • 2021-08-06
      • 2018-10-26
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      相关资源
      最近更新 更多