跳到主要内容

retrieve()

ChatGPT-4o 中英对照 retrieve() retrieve()

retrieve() 方法可以用来声明如何提取响应。例如:

WebClient client = WebClient.create("https://example.org");

Mono<ResponseEntity<Person>> result = client.get()
.uri("/persons/{id}", id).accept(MediaType.APPLICATION_JSON)
.retrieve()
.toEntity(Person.class);
java

或者只获取正文:

WebClient client = WebClient.create("https://example.org");

Mono<Person> result = client.get()
.uri("/persons/{id}", id).accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(Person.class);
java

获取解码对象的流:

Flux<Quote> result = client.get()
.uri("/quotes").accept(MediaType.TEXT_EVENT_STREAM)
.retrieve()
.bodyToFlux(Quote.class);
java

默认情况下,4xx 或 5xx 响应会导致 WebClientResponseException,其中包括特定 HTTP 状态码的子类。要自定义错误响应的处理,请按如下方式使用 onStatus 处理程序:

Mono<Person> result = client.get()
.uri("/persons/{id}", id).accept(MediaType.APPLICATION_JSON)
.retrieve()
.onStatus(HttpStatusCode::is4xxClientError, response -> ...)
.onStatus(HttpStatusCode::is5xxServerError, response -> ...)
.bodyToMono(Person.class);
java