http请求中Content-Type以及qs.stringify的使用

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" } })
}

 

参考地址:https://www.cnblogs.com/tugenhua0707/p/8975615.html

posted @ 2020-06-15 22:37  梁涛999  阅读(1960)  评论(0编辑  收藏  举报