Я - разработчик java 7 (наконец-то), делающий свои первые шаги в java 8. Многие из этих вещей все еще являются новыми для меня. Я пытаюсь использовать Spring 5 WebClient, так как в документации говорится, что RestTemplate будет удален в пользу WebClient.
webClient
.method(HttpMethod.POST)
.uri(uriBuilder -> uriBuilder.pathSegment("api", "payments").build())
.body(BodyInserters.fromObject(createPostRequest(paymentConfirmationData)))
.accept(MediaType.APPLICATION_JSON)
.exchange()
.doAfterSuccessOrError((clientResponse, throwable) -> {
if (clientResponse.statusCode().is5xxServerError()
|| clientResponse.statusCode().is4xxClientError()) {
logger.error("POST request naar orchestration layer mislukt, status: [{}]", clientResponse.bodyToMono(String.class));
Mono.error(throwable);
} else {
logger.error("POST request naar orchestration layer gelukt");
}
})
.block();
Я пытаюсь создать исключение в .doAfterSuccesOrError. Однако я не могу использовать бросаемую причину, потому что это просто добавляет ловушку вокруг него. Я прочитал несколько статей, и это моя последняя попытка добавить Mono.error (throwable), но поскольку возврата нет, я почти уверен, что это причина отсутствия эффекта.
Это вызов POST, который возвращает 204 No Content в случае успеха. На данный момент я получаю 422, хотя это не должно быть важно в этом конкретном вопросе.
Может ли кто-нибудь научить меня, как создавать исключения в вызывающей среде?