前言
HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样:
<method> <request-URL> <version>
<headers>
<entity-body>
协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。
但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python ,java等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。post提交数据有四种方式,下面介绍他们以及前端应该如何传参
Content-Type请求头指定了发送给服务器的数据类型,这决定了data字段的格式。以下是几种常见的Content-Type值及其对应的data格式:
1. application/x-www-form-urlencoded
当Content-Type设置为此值时,data应该是一个URL编码的查询字符串,通常由qs.stringify或类似方法生成。
qs可以将json序列化如下:
let a = {
name:'june',
age:26
}
qs.stringify(a) //"name=june&age=26" qs可以将josn对象转换成形如key&value
如何使用:
import qs from 'qs'
let data = {
code: 'fds', headImgUrl: '99'