问题描述:在讲师分页列表接口中,后端无法接收到前端axios传递的json对象,前端报错提示Uncaught (in promise) error
问题原因:请求为get方式,需要在url中接收参数,而无法从请求体接收参数。
但是在我配置axios时,使用了data这个配置,下图为错误演示
前端代码:
pageList(page, limit, searchObj) {
return request({
url: `${api_name}/list/${page}/${limit}`,
method: 'get',
data: searchObj
})
}
后端代码:
@ApiOperation(value = "讲师分页列表")
@GetMapping("/list/{page}/{limit}")
public R listPage(@ApiParam("当前页码") @PathVariable Long page,
@ApiParam("每页的记录数") @PathVariable Long limit,
@ApiParam("讲师列表查询对象") TeacherQueryVo teacherQueryVo){
System.out.println(teacherQueryVo);
Page<Teacher> pageParam = new Page<>(page, limit);
Page<Teacher> pageModel = teacherService.selectPage(pageParam,teacherQueryVo);
List<Teacher> records = pageModel.getRecords();
long total = pageModel.getTotal();
return R.ok().data("total",total).data("records",records);
}
解决方法:将data改为params配置,下图为正确演示
pageList(page, limit, searchObj) {
return request({
url: `${api_name}/list/${page}/${limit}`,
method: 'get',
params: searchObj
})
}
在axios中
- data表示在data是添加到请求体(body)中的, 用于post请求。
- params是添加到url的请求字符串中的,用于get请求。
所以此处只能用params。