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

发布于 2022-09-11 21:39:19 字数 906 浏览 12 评论 0

前端使用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. 传递参数带了一个中括号和不带有什么区别吗?不都是放在请求体里面吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

演多会厌 2022-09-18 21:39:19
后端看不懂,但每种方式传递的值结构都不同
  • 方式一参数为
{
  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可以看到参数

空

已下线请稍等 2022-09-18 21:39:19

参考:这里......
大概率的解决你的问题。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文