- HTTP协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。
- 但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。所以说到 POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分。
提交数据方式
-
application/x-www-form-urlencoded
HTTP的消息体以键值对的形式发送,后台可以通过key获取单个元素,实际中就是我们说的form表单提交
-
application/json
HTTP的消息体以json形式发送,后台只能获取整个json不能直接获取单独的key,实际应用广泛
-
multipart/form-data
HTTP的消息体以特殊字符分割厚的文本形式,文件内容的上传必须用multipart/form-data
-
text/xml
HTTP的消息体以文本形式发送,后台直接获取整个文本xml进行使用,实际用的比较少