Изо всех сил пытаюсь выяснить, как взять исключение, полученное из реактивного запроса, и просто создать его (тело и Http Status Code были бы минимальной информацией).
Я надеялся использовать ExchangeFilterFunction, как упомянуто здесь но, похоже, ошибка не обнаружена.Я знаю, что он зарегистрирован и работает по методу
public class MyExchangeFilterFunction implements ExchangeFilterFunction {
@Override
public Mono<ClientResponse> filter(ClientRequest request, ExchangeFunction next) {
return next.exchange(request).onErrorMap(MyError.class, c -> new RuntimeException("Ow"));
}
}
Зарегистрировать функцию фильтра:
WebClient.builder().filter(new MyExchangeFilterFunction())...
Ошибка преобразования в (поскольку я не могу понять, как просто всплыть):
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class MyError extends RuntimeException{
private Long timestamp;
private String path;
private Integer status;
private String error;
private String message;
}
-------- Обновление -------
В настоящее время ошибка с последним кодом, но не удается выяснить, какзаклинить тело ответа в сообщение Flux / Mono Error.
@Override
public Mono<ClientResponse> filter(ClientRequest request, ExchangeFunction next) {
return next.exchange(request).map(cr -> {
if(cr.statusCode().isError()) {
return ClientResponse.from(cr).body(
Flux.error(new RuntimeException("OW"))
).build();
} else {
return cr;
}
});
}