Java SpringWebFlux:如何将flux错误发送到客户端
我有一个基本的REST控制器,它返回可能引起错误的流量:Java SpringWebFlux:如何将flux错误发送到客户端,java,rest,reactive-programming,spring-webflux,Java,Rest,Reactive Programming,Spring Webflux,我有一个基本的REST控制器,它返回可能引起错误的流量: @GetMapping(value = "/foo", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Flux<Long> foo() { return Flux.interval(Duration.ofSeconds(2)).map(t -> 1/(3-t)).take(4); } 我们可以看到,服务器将发送0->0->1(类似地,客户机
@GetMapping(value = "/foo", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<Long> foo() {
return Flux.interval(Duration.ofSeconds(2)).map(t -> 1/(3-t)).take(4);
}
我们可以看到,服务器将发送0->0->1(类似地,客户机将为它们中的每一个运行doOnNext),但是服务器会抛出一个异常
org.springframework.web.HttpMediaTypeNotAcceptableException:无法
找到可接受的代表
客户端不会检测到流量错误(不运行doOnError),而是简单地读取流量上的onComplete。当服务器端flux发出错误时,如何使客户端运行doError?是否尝试使用类似的方法。OneErrorResume(e->Mono.error(new NameRequiredException(HttpStatus.BAD_REQUEST,“username is required”,e))、String.class);您能详细说明一下您期望在HTTP级别发生的事情吗?i、 e.发生此错误时,SSE流的内容应该是什么?
webClient.get()
.uri("/foo")
.retrieve()
.bodyToFlux(Integer.class)
.doOnError(System.err::println)
.doOnNext(System.out::println)
.blockLast();