如何在 Spring5 中使用 BodyInserters 插入请求正文?

Kay*_*ayV 2 spring spring-boot

我正在使用 Sping webflux 模块并创建一个 WebClient,请求 uri 和请求正文如下:

// create webclient
WebClient wc3 = WebClient.builder()
                            .baseUrl("http://localhost:8080")
                            .defaultCookie("key", "val")
                            .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
                            .build();
// set uri
WebClient.RequestBodySpec uri1 = wc3.method(HttpMethod.POST).uri("/getDocs");


//  set a request body
WebClient.RequestBodySpec requestSpec1 = WebClient.create().method(HttpMethod.POST).uri("/getDocs")
                                                .body(BodyInserters.fromPublisher(Mono.just("data")), String.class);
Run Code Online (Sandbox Code Playgroud)

当我设置请求正文时,我收到以下编译错误:

Multiple markers at this line
    - Type mismatch: cannot convert from Mono<String> to P
    - The method fromPublisher(P, Class<T>) in the type BodyInserters is not applicable for the arguments 
     (Mono<String>)
Run Code Online (Sandbox Code Playgroud)

Java 编辑器仅显示“在文件中重命名”作为建议。

我不确定我是否完美地使用了 BodyInserters。请建议。

pvp*_*ran 9

它必须是这样的

//  set a request body
WebClient.RequestHeadersSpec<?> data = WebClient.create().method(HttpMethod.POST).uri("/getDocs")
                                                .body(BodyInserters.fromPublisher(Mono.just("data"), String.class));
Run Code Online (Sandbox Code Playgroud)