Content-Type
Content-Type是指http/https發送信息至服務器時的內容編碼類型,contentType用於表明發送數據流的類型,服務器根據編碼類型使用特定的解析方式,獲取數據流中的數據。
在網絡請求中,常用的Content-Type有如下:
常見的頁面資源類型:text/html, text/plain, text/css, text/javascript, image/jpeg, image/png, image/gif,
ajax的請求,表單提交或上傳文件的常用的資源類型:application/x-www-form-urlencoded, multipart/form-data, application/json, application/xml 等。
接口數據傳輸方式 form data、payload
Payload Content-Type: 'application/json; charset=utf-8' Form Data Content-Type: 'application/x-www-form-urlencoded'
POST提交數據有兩種數據傳輸方式,這兩種方式瀏覽器是通過Content-Type來進行區分,如果是 application/x-www-form-urlencoded的話,則為formdata方式,如果是application/json或multipart/form-data的話,則為 request payload。
如果是GET請求,則為Query String Parameters
qs.stringify的使用
axios默認的content-type是application/json
傳輸的樣式是
{
name:'小明',
age:'29'
}
如果使用的qs進行序列化,(注:qs.stringify()將對象序列化成URL的形式,以&進行拼接。安裝axios即可使用qs。)
那么content-type就是application/x-www-form-urlencoded
也就是常說的表單提交,傳輸的樣式是formdata
name:'小明',
age:'29'
后台urlencoding后是
name='小明'&age='29'
對比下JSON.stringify。JSON是正常類型的JSON,
var a = {name:'hehe',age:10}; qs.stringify(a) // 'name=hehe&age=10' JSON.stringify(a) // '{"name":"hehe","age":10}'
是否需要用qs去序列化參數完全取決於后端要怎么接受數據。
實例:
var qs = require("qs"); export const AxiosPost = (url, params) => { return axios.post(url,qs.stringify(params), {headers: {"Content-Type": "application/x-www-form-urlencoded" } }) }