一邓萨、axios的post請求方式
- 第一種
axios.post( url, {
data1: data1,
data2: data2
}
- 第二種
axios({
method: 'post’,
url: url,
data: {
data1: data1
data2: data2
}
})
具體文檔參考Axios中文說明
二、導(dǎo)致原因
具體原因可以在請求是打印axios的request config锨天,我們可以看到headers里面的“Content-Type”毯盈,里面顯示的是application/json,如果是以這種方式傳值病袄,后臺的springMVC的@RequestParam接收不到參數(shù)搂赋;網(wǎng)上有一些方法說在axios的配置中直接改為:axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; 然而我試過并沒有用。
三益缠、解決辦法
1脑奠、后臺的接收參數(shù)的注解@RequestParam改為@RequestBody
2、前端轉(zhuǎn)換參數(shù)左刽,具體步驟如下:
npm install qs --save-dev
axios.post(url, qs.stringify({
data1: data1,
data2: data2
})
其實qs.stringify()的目的是將鍵值對(key/value)的方式轉(zhuǎn)為了&連接捺信,既: data1=data1&data2=data2,有興趣的可以打印axios的config欠痴,就可以看到request data里面的值了迄靠。
四、application/json 和 application/x-www-form-urlencoded的區(qū)別
具體釋義請參照這里