我想通过添加WebExceptionHandler来处理我的api的异常.我可以更改状态代码,但是当我想要更改响应的主体时,我会陷入困境:ex添加异常消息或自定义对象.
有人有例吗?
我如何添加我的WebExceptionHandler:
HttpHandler httpHandler = WebHttpHandlerBuilder.webHandler(toHttpHandler(routerFunction))
.prependExceptionHandler((serverWebExchange, exception) -> {
exchange.getResponse().setStatusCode(myStatusGivenTheException);
exchange.getResponse().writeAndFlushWith(??)
return Mono.empty();
}).build();
Run Code Online (Sandbox Code Playgroud) 我正在使用spring webflux的webclient,如下所示:
WebClient.create()
.post()
.uri(url)
.syncBody(body)
.accept(MediaType.APPLICATION_JSON)
.headers(headers)
.exchange()
.flatMap(clientResponse -> clientResponse.bodyToMono(tClass));
Run Code Online (Sandbox Code Playgroud)
它运作良好.我现在想要处理来自我正在调用的Web服务的错误(Ex 500内部错误).通常我会在"stream"上添加一个doOnError,而isu是Throwable来测试状态代码,
但我的问题是我想获得webservice提供的正文,因为它为我提供了一条我想要使用的消息.
我希望无论发生什么事情都要做flatMap,并测试自己的状态代码以反序列化或不反复身体.