【发布时间】:2019-11-25 10:42:57
【问题描述】:
我想检查ServerRequest 是否包含正文。
有没有办法事先调用bodyToMono 方法找出来?
【问题讨论】:
-
通过查看返回的状态码。根据 http 标准,如果 200 你有义务查看正文,如果 204 则没有内容。
-
我说的是请求,而不是响应
我想检查ServerRequest 是否包含正文。
有没有办法事先调用bodyToMono 方法找出来?
【问题讨论】:
假设客户端确实发送了相应的标头,您可以通过检查 content-length 标头来实现,如下所示:
request.headers().contentLength().orElseGet(0) > 0
您可以直接在处理程序中使用它,也可以在过滤器中使用它
【讨论】:
您可以在服务器请求实例中使用.body(BodyExtracter) 方法
如果正文包含数据,要转换为具有true 值的Mono<Boolean>,请使用
Mono<Boolean> bodyContains = request.body((serverHttpRequest, context) -> serverHttpRequest
.getBody()
.collectList()
.map(List::isEmpty));
【讨论】: