有没有办法查明 ServerRequest 是否有主体?

Is there a way to find out if ServerRequest has a body?

我想检查 ServerRequest 是否包含正文。

有没有办法在调用 bodyToMono 方法之前找出它?

您可以在服务器请求实例中使用.body(BodyExtracter)方法

如果正文包含数据,要转换为具有 true 值的 Mono<Boolean>,请使用

Mono<Boolean> bodyContains = request.body((serverHttpRequest, context) -> serverHttpRequest
    .getBody()
    .collectList()
    .map(List::isEmpty));

假设客户端确实发送相应的 headers,您可以通过检查 content-length header 来实现它:

request.headers().contentLength().orElseGet(0) > 0

您可以直接在处理程序中使用它,也可以在过滤器中使用它