axios請求中以params或body形式傳遞參數(shù)的區(qū)別淺析
一、前言:
前端發(fā)送請求最常?的是get請求還有post請求,get請求只能傳query參數(shù),query參數(shù)都是拼在請求地址上的,post可以傳body和query兩種形;我在開發(fā)的時候通常使用的是Axios第三方庫進行網(wǎng)絡請求,所以這里主要是將Axios請求時query與body傳遞參數(shù)的區(qū)別
- data----->body參數(shù)(也就是請求體)
- params----->query參數(shù)(都是拼接在請求地址上)
二、Axios post
當content-type為application/x-www-form-urlencoded時
1. axios 中post請求Content-Type默認為application/json,我們傳遞參數(shù)的時候,query里面的參數(shù)(簡稱對象,通過“{}”或者“new Object“創(chuàng)建)會被以&的方式憑借到請求地址的后面(get請求也是一樣的)
params參數(shù)如下:

2.data里面的參數(shù)(簡單的對象,通過“{}”或者“new Object”創(chuàng)建的),會以Form Data的形式存在,但是Form Data里面把我們傳進去的整體當成了一個key值,沒有value
- 解決Form Data里面把我們傳進去的整體當成了一個key值,沒有value的方法:導入qs庫(qs庫以及包含在axios中,不需要重新安裝),data里面的參數(shù)使用qs.stringify方法來轉換,轉換之后后端才能正常的獲取

當content-type為application/json時:
post請求當Content-Type設置為application/json;時,query(簡單對象)里面的參數(shù)仍然會被拼接到請求連接后面,但是data(簡單對象)里面的參數(shù)放到Request Payload中
三、代碼舉例說明
get請求
axios({
method: 'GET',
url: 'xxxxx',
params: param,
})
/or get請求沒有請求體參數(shù)一說
axios({
method: 'GET',
url: '/xxx?message=' + msg,
})post請求
1.body參數(shù)
/* 編輯項?列表 */
export function editProjectList(params) {
return request({
url: 'xxxxx....',
method: 'post',
data: params// data就是body參數(shù)
});
}2.params參數(shù)
/* 增加客戶列表 */
export function addClientList(params) {
return request({
url: '....xxxx',
method: 'post',
params: params// params就是query參數(shù)
});
}
export function addClientList(params) {
return request({
url: '....xxxx',
method: 'post',
params: {params}// params就是query參數(shù)
});
}
export function addClientList(params) {
return request({
url: '....xxxx',
method: 'post',
params: {
info:'heihei'
}// params就是query參數(shù)
});
}
四、總結
- 使用post請求且content-type為application/x-www-form-urlencoded時,通常需要借助qs進行數(shù)據(jù)轉換,轉換后的數(shù)據(jù)發(fā)送給后端,后端才能正確的處理
- params形式傳遞數(shù)據(jù)不管是get還是post請求,參數(shù)最后都是以拼接url的形式出現(xiàn)
- get請求沒有body的傳參方式
- 在跟后端同時對接接口的時候,如果你的請求參數(shù)params與body分不清,通常會出現(xiàn)405的錯誤狀態(tài)碼如:{"code":405,"success":false,"data":{},"msg":"Request method 'GET' not supported"}
- 由于經(jīng)常用的是axios庫,所以發(fā)請求的時候要注意params和data的區(qū)別
到此這篇關于axios請求中以params或body形式傳遞參數(shù)的區(qū)別的文章就介紹到這了,更多相關axios請求傳遞參數(shù)的區(qū)別內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
基于Vue實現(xiàn)后臺系統(tǒng)權限控制的示例代碼
本篇文章主要介紹了基于Vue實現(xiàn)后臺系統(tǒng)權限控制的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
vue的axios請求改變content-type為form-data問題
這篇文章主要介紹了vue的axios請求改變content-type為form-data問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
vue.js組件vue-waterfall-easy實現(xiàn)瀑布流效果
這篇文章主要為大家詳細介紹了vue.js實現(xiàn)瀑布流之vue-waterfall-easy的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08

