@RequestBody 异常:Required request body is missing
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@RequestBody 异常:Required request body is missing相关的知识,希望对你有一定的参考价值。
参考技术A 异常的抛出点在RequestResponseBodyMethodProcessor的readWithMessageConverters方法,而arg 的返回时在AbstractMessageConverterMethodArgumentResolver的readWithMessageConverters进行。
由于我们的ContenType是Json格式,因此由JsonConvert进行处理。而GET方法请求试没有传输body因此无法获取body信息。导出返回的body为null,因此抛出异常。
通过源码的分析我们得出。因为GET方法请求试没有传输body信息。导致Spring处理body的时候为null,抛出异常。只用我们将GET方法修改成POST方法即可访问。
SpringBoot使用@RequestBody 报错400 2019-10-26
参考技术A 大意就是请求被CORS策略阻止。2019/10/27找到了原因:
vue 发送json ,会导致此次请求被认为是一次复杂的请求,所以会发送两次请求(为什么会发送两次请自行查询 ),第一次不带任何数据,服务端口的@RequeseBody 会默认请求的数据为空时报错。
解决办法:
1 如上: 加上 required=false 参数,不检查数据是否为空
2 使用拦截器,通过request.getMethod(),得到请求方法,如果是OPTIONS 就直接返回,特别注意返回时要带上响应头以允许这次跨域访问(为什么要允许跨域访问自行查询)
以上是关于@RequestBody 异常:Required request body is missing的主要内容,如果未能解决你的问题,请参考以下文章
springboot中@RequestBody和@ReponseBody获取参数
如何处理spring boot 2中@Requestbody中的对象抛出的异常
RequestBodyRequestPartRequestBody的区别
带有@RequestParam和@RequestBody的Spring @GetMapping因HttpMessageNotReadableException而失败