美文网首页
axios的post请求,后台拿不到参数

axios的post请求,后台拿不到参数

作者: 咸菜大大 | 来源:发表于2018-12-08 22:49 被阅读0次

一、axios的post请求方式

  • 第一种
axios.post( url, {
  data1: data1,
  data2: data2
}
  • 第二种
axios({
  method: 'post’,
  url: url,
  data: {
    data1: data1
    data2: data2
  }
})

具体文档参考Axios中文说明

二、导致原因

具体原因可以在请求是打印axios的request config,我们可以看到headers里面的“Content-Type”,里面显示的是application/json,如果是以这种方式传值,后台的springMVC的@RequestParam接收不到参数;网上有一些方法说在axios的配置中直接改为:axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; 然而我试过并没有用。

三、解决办法

1、后台的接收参数的注解@RequestParam改为@RequestBody
2、前端转换参数,具体步骤如下:

npm install qs --save-dev
axios.post(url, qs.stringify({
  data1: data1,
  data2: data2
})

其实qs.stringify()的目的是将键值对(key/value)的方式转为了&连接,既: data1=data1&data2=data2,有兴趣的可以打印axios的config,就可以看到request data里面的值了。

四、application/json 和 application/x-www-form-urlencoded的区别

具体释义请参照这里

相关文章

网友评论

      本文标题:axios的post请求,后台拿不到参数

      本文链接:https://www.haomeiwen.com/subject/jgmchqtx.html