发送post请求⼏种常见content-type类型
application/x-www-form-urlencoded
json值的类型有哪些这应该是最常见的 POST 提交数据的⽅式了。浏览器的原⽣ form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded ⽅式提交数据。请求类似于下⾯这样
⾸先,Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的⽅式进⾏编码,key 和 val 都进⾏了 URL 转码。⼤部分服务端语⾔都对这种⽅式有很好的⽀持。
很多时候,我们⽤ Ajax 提交数据时,也是使⽤这种⽅式。例如 JQuery 和 QWrap 的 Ajax,Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」。
multipart/form-data
这⼜是⼀个常见的 POST 数据提交的⽅式。我们使⽤表单上传⽂件时,必须让 form 的 enctyped 等于这个值。直接来看⼀个请求⽰例:
这个例⼦稍微复杂点。⾸先⽣成了⼀个 boundary ⽤于分割不同的字段,为了避免与正⽂内容重复,boundary 很长很复杂。然后Content-Type ⾥指明了数据是以 mutipart/form-data 来编码,本次请求的 boundary 是什么内容。消息主体⾥按照字段个数⼜分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着内容描述信息,然后是回车,最后是字段具体内容(⽂本或⼆进制)。如果传输的是⽂件,还要包含⽂件名和⽂件类型信息。消息主体最后以 --boundary-- 标⽰结束。
这种⽅式⼀般⽤来上传⽂件,各⼤服务端语⾔对它也有着良好的⽀持。上⾯的例⼦是⽤户登录采⽤的⽅式。
上⾯提到的这两种 POST 数据的⽅式,都是浏览器原⽣⽀持的,⽽且现阶段原⽣ form 表单也只⽀持这两种⽅式。但是随着越来越多的Web 站点,尤其是 WebApp,全部使⽤ Ajax 进⾏数据交互之后,我们完全可以定义新的数据提交⽅式,给开发带来更多便利。
application/json
这种类型是我们推荐的,。实际上,现在越来越多的⼈把它作为请求头,⽤来告诉服务端消息主体是序列化后的 JSON 字符串。由于JSON 规范的流⾏,除了低版本 IE 之外的各⼤浏览器都原⽣⽀持 JSON.stringify,服务端语⾔也都有处理 JSON 的函数,使⽤ JSON 不会遇上什么⿇烦。
JSON 格式⽀持⽐键值对复杂得多的结构化数据 ,但是这种模式虽然⽐较推荐,但是在重构项⽬的时候,采⽤这种⽅式,如果后台的代码⽐较⽼,可能会出现后台接收不到请求的字段的尴尬。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论