微信小程序request請求後臺接收不到參數問題

微信小程序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對象序列化才行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章