后台无法接收到axios post请求传递的参数

前端使用axios库来发送请求

代码如下

let params = {
  index:1,
  size:10,
  filter:{
    name:'test',
    age:'10'
  }
}
// 方式一:
axios({
  url: `xxxxxx/${id}`,
  method: 'post',
  data:params
   
})
// 方式二:
axios({
  url: `xxxxxx/${id}`,
  method: 'post',
  data:{
    filter:params
  }
})

后台spring mvc框架,接受参数处理如下:

@PostMapping("/xxx/{id}")
    public void exportReport(@PathVariable String id, @RequestBody PaginatedFilter filter, HttpServletResponse response) throws IOException {

结果

  • 方式一传递,后台可以拿到params里面filter的值,但是拿不到indexsize的值.
  • 方式二传递,后台什么值都拿不到.

查看请求在Request Payload中参数都是正确的

疑惑

  1. 为什么会出现第一种情况,能拿到其中的filter,拿不到其他两个值?
  2. 传递参数带了一个中括号和不带有什么区别吗?不都是放在请求体里面吗?
阅读 3.8k
2 个回答
后端看不懂,但每种方式传递的值结构都不同
  • 方式一参数为
{
  index:1,
  size:10,
  filter:{
    name:'test',
    age:'10'
  }
}
  • 方式二参数
{
  filter: {
    index:1,
    size:10,
    filter:{
      name:'test',
      age:'10'
    }
  }
}
  • 方式三四 不知道filter在哪儿,假设是params中的filter
// 三
{
  filter: {
    name:'test',
    age:'10'
  }
}
// 四
{
  name:'test',
  age:'10'
}

打开浏览器F12可以看到参数

空

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题