Required request body is missing: public com.athk.commonutils.R com.athk.eduservice.controller.EduCo

美好的一天,从解决BUG开始!

org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.athk.commonutils.R com.athk.eduservice.controller.EduCourseController.addCourseIfno(com.athk.eduservice.entity.vo.courseInfoVo)

今天在做前后端粉里分离的项目时,后端报了这个错,使用的前端工具是VScode,使用vue,后端是idea

大概意思是我们要从前端获取的数据丢失了Required request body is missing
这里我用了@RequestBody这个注解,这个注解的大概作用,就是把前端提交的数据包装成一个json格式的数据给我们返回到后端,后端再对数据进行处理。所以数据丢失的原因应该是在前端,到前端看看该数据的返回过程。

1、先是创建一个对象,给对象添加属性在这里插入图片描述
2、然后类似下面一个个的el表达式通过v-model双向绑定数据存储在上述对象中

<el-input v-model="courseInfo.title">

3、调用API方法传给后端

saveOrUpdate() {              
course.addCourseInfo(this.courseInfo)
.then(response => {                      
//提示                      
this.$message({                          
	type: 'success',                          
	message: '添加课程信息成功!'                      
	});                                          
})         
 }

第一种可能:前端数据没有用data:对其进行定义,前端VUE返回的数据如果要以json的形式返回的话,必须用data:进行定义,否则会报错,于是我添加了data:courseInfo
在这里插入图片描述
在这里插入图片描述
再次提交,发现还是报原来的错,这个时候暴脾气的我顶不住了,喝了杯水继续找BUG

第二种可能:我到后端看了需要前端返回封装的实体类,经过一一对应,发现前端的封装对象里面确实比后端多了一个属性(心情开朗了起来),这时候有两种解决方法。
1、在前端创返回给后端数据的对象里,不要写属性,vue会默认帮你创建,只需要courseInfo:{}即可
2、在后端实体类中加上前端对象中没有的属性

第一种:
优点:可以给前端的属性初始化,对于一些前端页面还是有必要的
缺点:一旦写多写少了,会影响封装数据的完整性,导致后端无法正常获取

使用第二种的朋友要注意,如果你的实体类是对应到数据库的表的话,你还得到数据库去加属性,当然,如果影响不大,可以尝试。我这里后端的实体类是个过渡类,用来封装多个表的数据,然后再对它进行拆分成多个表的内容,过程种可以选取式的拿数据,所以我这里直接在后端加了个属性就解决问题啦。

希望该文章对你们有帮助哈,有帮到你们的麻烦点个赞哈,有兴趣的朋友可以关注一下公众号,公众号上会发布一些最近行业常用的技术,还有一些自己见解的文章。在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/fighting32/article/details/107162770