Exception 如何从webflux应用程序返回请求状态错误的异常消息

Exception 如何从webflux应用程序返回请求状态错误的异常消息,exception,spring-webflux,bad-request,Exception,Spring Webflux,Bad Request,您能给我一个建议吗,从webflux处理程序返回HttpStatus.BAD\u请求的正确方法是什么 下面是代码,它似乎工作正常,异常消息根据需要返回,但响应状态为200,而需要为400。请注意,返回的媒体类型为TEXT\u EVENT\u STREAM- @Component public class ResolveHandler { public Mono<ServerResponse> resolve(ServerRequest request) {

您能给我一个建议吗,从webflux处理程序返回
HttpStatus.BAD\u请求的正确方法是什么

下面是代码,它似乎工作正常,异常消息根据需要返回,但响应状态为200,而需要为400。请注意,返回的媒体类型为
TEXT\u EVENT\u STREAM
-

@Component
public class ResolveHandler {

    public Mono<ServerResponse> resolve(ServerRequest request) {
        return ServerResponse.ok().contentType(MediaType.TEXT_EVENT_STREAM)
                .body(
                        new ResultsFluxer(
                            Integer.valueOf(request.queryParam("numberOfIterations").orElse("0")),
                            request.queryParam("function1").orElse(""),
                            request.queryParam("function2").orElse(""),
                            orderingType
                        )
                        .getResult()
                        .onErrorResume(e -> Flux.just(e.getMessage()))
                        , Flux.class);

    }
}
@组件
公共类解析处理程序{
公共Mono解析(服务器请求){
返回ServerResponse.ok().contentType(MediaType.TEXT\u事件\u流)
.身体(
新结果Fluxer(
Integer.valueOf(request.queryParam(“numberOfIterations”).orElse(“0”)),
request.queryParam(“function1”).orElse(“”),
request.queryParam(“函数2”).orElse(“”),
订购类型
)
.getResult()
.onErrorResume(e->Flux.just(e.getMessage()))
、流量、类别);
}
}

我已经阅读了这篇文章,我的示例中的错误处理工作正常,因为一旦出现错误,它会返回错误消息,正如计划的那样。问题是:如何从服务器的主体(即Flux)影响服务器响应?我的意思是,如果响应主体中发生错误,我如何更改响应状态?也许我错过了一些东西
.onErrorResume(e->Flux.just(e.getMessage())
,这里您基本上只是说获取错误消息,将其放入Flux并返回给客户端。Så你没有以任何方式中止订阅。把它想象成装配皮带的类比。有人订阅,您返回数据,数据,数据,数据,然后出现问题,您要做的是将错误消息包装在数据中并返回,然后恢复常规数据馈送。由于您希望返回REST错误代码,因此您需要做的是断开订阅以返回错误代码。这是通过而不是返回一个
流量来完成的。只是(e.getMessage)
*因为这里您基本上只是说“返回一个带有此错误消息的常规流量”您需要返回一个
Flux.error
,其中包含一个
ResponseStatusException
的实例,但请记住,返回异常是一个终端事件,它将中断客户端的订阅。