微信小程序request請求後臺接收不到參數問題
一. 小程序部分代碼
發一個普通的request請求
wx.request({
url: app.globalData.server_prefix + '/api/v1.0/songlists/user/wxLogin/',
method: 'POST',
data: {
code: that___.data.login_code,
userHead: that___.data.userInfo.avatarUrl,
userName: that___.data.userInfo.nickName,
userGender: that___.data.userInfo.gender,
userCity: that___.data.userInfo.country,
userProvince: that___.data.userInfo.province
},
success: function(res) {
console.log("request:", res)
},
fail: function(res) {
console.log(res)
}
})
},
二. 後端
請求過來後並無參數
三. 問題代碼
發現request請求裏面缺少請求頭,填上如下請求頭,後端還是沒參數
header: {
'content-type': 'application/json' // 默認值
}
查閱資料後發現
有時參數爲application/json的請求後臺接收參數爲空,改成application/x-www-form-urlencoded就好了
四. 請求頭
常見的表單數據提交數據的編碼類型content-type
- application/x-www-form-urlencoded
- application/json
- multipart/form-data
- text/xml
大家都知道,HTTP 協議是以 ASCII 碼傳輸,建立在 TCP/IP 協議之上的應用層規範。規範把 HTTP 請求分爲三個部分:狀態行、請求頭、消息主體。
協議規定 POST 提交的數據必須放在消息主體(entity-body)中,但協議並沒有規定數據必須使用什麼編碼方式。
服務端通常是根據請求頭(headers)中的 Content-Type 字段來獲知請求中的消息主體是用何種方式編碼,再對主體進行解析。所以說到 POST 提交數據方案,包含了 Content-Type 和消息主體編碼方式兩部分。
當設置爲請求頭的Content-Type設爲application/json時,不能直接發送json對象,需要把json對象序列化才行。