form data 和request payload 和Query String Parameters的区别?

求解释一下form data 和request payload 和Query String Parameters的区别,使用post还是get请求发出的,content-type怎么设置之类的

阅读 7.2k
2 个回答

URL 的格式如下:
scheme://user:password@host:port/path;params?query#frag

query 部分就是 Query String Parameters

HTTP 的请求报文格式如下

<method>  <request-URL>  <version>

<header>

<entity-body>

request payloadform data 都是 entity-body 块的内容,只是由 Content-type 区分解析行为。
一般 form-data`Content-type=application/x-www-form-urlencoded
其余的一般都默认是 request payload (文件上传不知道算不算,有兴趣可以自行搜索一下)。

Query String Parameters 无论什么请求方式都可以带,取决于自己要不要解析。
entity-body 则是要部分请求方式
POSTPUTPATCHDELETEOPTIONS(UN)LINKLOCKPROPFINDVIEW
之类的都可以带 body

Demo: http://wfquery.top/demo/07.fo...

  • formdata 当使用FormData提交 POST 请求数据时(可以提交blob数据, 也就是支持文件上传), 默认提交 数据在request.plaload
$.ajax({
  type: 'POST',
  url: '/',
  form: $('form')
});

clipboard.png
https://github.com/shy2850/wf...

  • 使用GET请求时,数据一般是querystring

clipboard.png

clipboard.png

  • 如果你使用POST提交querystring,需要设置 Content-Type: 'application/x-www-form-urlencoded', 数据通过 xhr.send(data)提交

https://github.com/shy2850/wf...

  • 以上,算是比较常用的表单数据提交方式, 你还可以直接提交json格式字符串之类的,服务端通过获取整个query去parseJSON, 文件上传的时候 xhr.send(buffer) 也可以直接提交buffer。
事实上前端是不是需要设置请求头的 “Content-Type” 完全由服务端决定的,以上不管是 querystring-param 还是 query-json 格式都可以在同等位置提交,所以很多时候我们前后端协议约定这个需要设置一下 格式交互规范,你在项目里也可以不遵循这个约定,自己定义规则。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题