Giriş
Şu Http işleri yapılabilir.
delete()
get()
head()
options()
get()
head()
options()
işleri içindir
exchange metodu
Şöyle yaparız
Şöyle yaparız
webClient.get().uri(...).exchange().flatMapMany (...)
retrieve metodu
Get içindir. retrieve() metodundan sonra bodyToFlux() veya bodyToMono() çağrısı yapılarak Flux veya Mono nesnesine çevirmek gerekir.
Örnek
Şöyle yaparız
webClient.get().uri(...).retrieve().bodyToFlux(...).collectList().block();
Örnek - Blocking
Şöyle yaparız
String workerUserName = ...;LocalDate date = ...;// retrieve worklogs for worker and dayList<WorklogInfo> worklogsForDay = webClient.get().uri(uriBuilder -> uriBuilder .path("/worklogs/worker/{workerUserName}").queryParam("day", date).build(workerUserName)).retrieve().bodyToFlux(WorklogInfo.class).collectList().block();
Örnek - Stream
Şöyle yaparız
Flux<DataBuffer> stream = webClient
.get().accept(MediaType.APPLICATION_OCTET_STREAM)
.retrieve()
.bodyToFlux(DataBuffer.class);
Path filePath = Paths.get("filename");
AsynchronousFileChannel asynchronousFileChannel = AsynchronousFileChannel.open(filePath,
WRITE);
return DataBufferUtils.write(stream, asynchronousFileChannel)
.doOnNext(DataBufferUtils.releaseConsumer())
.doAfterTerminate(() -> {
try {
asynchronousFileChannel.close();
} catch (IOException ignored) { }
}).then();
onStatus metodu
HttpStatusCode değerlerine göre işlem yapabilmeyi sağlar
Örnek
Şöyle yaparız
public Mono<InventoryEntry> getByName(String name) {
return webClient
.get()
.uri(uriBuilder -> uriBuilder
.path("/by-name")
.queryParam("title", "{name}")
.build(name))
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.retrieve()
.onStatus(httpStatusCode -> HttpStatus.NOT_FOUND == httpStatusCode,
clientResponse -> Mono.empty())
.onStatus(HttpStatusCode::is5xxServerError, this::handleServerError)
.bodyToMono(InventoryEntry.class)
.retryWhen(retrySpec);
}
Mono<ExternalCommunicationException> handleServerError(ClientResponse clientResponse) {
ExternalCommunicationException returnedException = new ExternalCommunicationException(
"Communication with inventory client failed due to server error",
clientResponse.statusCode().value()
);
return Mono.error(returnedException);
}
uri metodu
Hiç yorum yok:
Yorum Gönder