使用WebFlux时如何使用HTTP DELETE发送正文?

2022-09-03 12:28:28

我想访问一个提供端点的HTTP API。此特定终结点需要一个项目列表(我要删除)作为 JSON 正文。DELETE

现在,我的问题是,我正在使用Spring Webflux。但是它的WebClient并没有给我发送带有请求的正文的可能性。对于一个,我会这样做:DELETEPOST

webClient.post()
         .uri("/foo/bar")
         .body(...)
         .exchange()

但是对于 ,我得到了一个 RequestHeadersSpec,它没有给我提供一个 :DELETEbody(...)

webClient.delete()
         .uri("/foo/bar")
         .body(...)       <--- METHOD DOES NOT EXIST
         .exchange()

那么,在客户端使用Spring Webflux实现这一目标的方法是什么呢?


答案 1

您可以使用webClient的运算符。简单的例子,method()

return webClient
        .method(HttpMethod.DELETE)
        .uri("/delete")
        .body(BodyInserters.fromProducer(Mono.just(new JSONObject().put("body","stringBody").toString()), String.class))
        .exchange() 

答案 2
  return webClient
            .method(HttpMethod.DELETE)
            .uri(url)
            .body(Mono.just(request), requestClass)
            .retrieve() 
            .toEntity(Void.class);

因此,我们将得到:

 Mono<ResponseEntity<Void>>

推荐