content-type类型总结
content-type类型总结
·
content-type
- content-type是http请求的响应头和请求头的字段。当作为响应头时,告诉客户端实际返回的内容的内容类型。作为请求头时,客户端告诉服务器实际发送的数据类型。
- 前端开发过程中,需要跟后端工程师对接接口的数据格式,不同的数据类型对于服务器来说有不同的处理方式,因此我们需要关注不同的conten-type类型.
1. application/x-www-form-urlencoded
- 浏览器原生form表单默认的提交方式(在不设置enctype的情况下)。
- 提交的数据按照 k1=v1&k2=v2的方式进行编码,key和val都进行了URL转码.此时请求头的格式如下:
content-type: application/x-www-form-urlencoded;charset=utf-8
form-data: k1=v1&k2=v2
- 非字母或数字的字符会被进行编码(编码方式https://developer.mozilla.org/zh-CN/docs/Glossary/percent-encoding),这也是为什么这种方式不支持二进制数据的原因。
2. multipart/form-data
- 与application/x-www-form-urlencoded 的区别是它支持文件的传输,并且它的传输数据放在request-payload里,并且以bounday进行分隔。
- 常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 form 的 enctype 等于这个值。
<form action="/" method="post" enctype="multipart/form-data">
<input type="text" name="name" value="some text">
<input type="file" name="fileName">
<button type="submit">Submit</button>
</form>
- 请求头
POST /foo HTTP/1.1
Content-Length: 68137
Content-Type: multipart/form-data;
boundary=---------------------------974767299852498929531610575
---------------------------974767299852498929531610575
Content-Disposition: form-data; name="name" value="some text"
---------------------------974767299852498929531610575
Content-Disposition: form-data; name="fileName"; filename="foo.txt"
Content-Type: text/plain
(content of the uploaded file foo.txt)
---------------------------974767299852498929531610575--
4.application/json
- 消息主体是序列化后的 JSON 字符串,这个类型越来越多地被大家所使用
POST http://www.example.com HTTP/1.1
Content-Type: application/json;charset=utf-8
{"title":"test","sub":["a","b","c"]}
- 它用来告诉服务端消息主体是序列化后的 JSON 字符串,其中一个好处就是JSON 格式支持比键值对复杂得多的结构化数据。
- 特别适合 RESTful 的接口。传递JSON字符串可以方便的让前端转为js的对象,进行显示和逻辑操作。
5.text/plain
- 传统的ajax请求提交
function submit2() {
var xhr = new XMLHttpRequest();
xhr.timeout = 2000;
var obj = {a: 1, b: 2};
xhr.open('POST', '/');
xhr.send(obj);
}
6.text/xml
- 是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范
POST [http://www.example.com](http://www.example.com) HTTP/1.1
Content-Type: text/xml
<!--?xml version="1.0"?-->
<methodcall>
<methodname>method1</methodname>
<params>
<param>
<value>50</value>
</param>
</params>
</methodcall>
- 总结
1.传统的ajax请求时候,
Content-Type
默认为"文本"类型。2.传统的form提交的时候,
Content-Type
默认为"Form"类型。
7. 对于axios请求,不同的请求方式content-type也不同
function submit3() {
var p1 = 'name=a&val=b';
var p1 = {name: a, val: b};
axios.post('/url', p1 )
}
-
当传递的是字符串的时候:application/x-www-form-urlencoded
-
当传递的是对象的时候:application/json
-
总结:
1.axios传递字符串的时候,
Content-Type
默认为"Form"类型。2.axios传递对象的时候,
Content-Type
默认为"JSON"类型
更多推荐
已为社区贡献1条内容
所有评论(0)