Query String Parameters

当发起一次GET请求时,参数会以url string的形式进行传递。即?后的字符串则为其请求参数,并以&作为分隔符。

如下http请求报文头:

// General
Request URL: http://foo.com?x=1&y=2
Request Method: GET // Query String Parameters
x=1&y=2

Form Data

当发起一次POST请求时,若未指定content-type,则默认content-type为application/x-www-form-urlencoded。即参数会以Form Data的形式进行传递,不会显式出现在请求url中。

如下http请求报头:

// General
Request URL: http://foo.com
Request Method: POST // Request Headers
content-type: application/x-www-form-urlencoded; charset=UTF-8 // Form Data
x=1&y=2

Request Payload

当发起一次POST请求时,若content-type为application/json,则参数会以Request Payload的形式进行传递(显然的,数据格式为JSON),不会显式出现在请求url中。

如下http请求报头:

// General
Request URL: http://foo.com
Request Method: POST // Request Headers
content-type: application/json; charset=UTF-8 // Request Payload
x=1&y=2

如果希望通过Form Data的方式来传递数据,则可以通过原生方法formData()来进行数据组装,且content-type需要设置为multipart/form-data。

如下http请求报头:

// General
Request URL: http://foo.com
Request Method: POST // Request Headers
content-type: multipart/form-data; charset=UTF-8 // Request Payload
------WebKitFormBoundaryAIpmgzV8Ohi99ImM
Content-Disposition: form-data; name="x" 1
------WebKitFormBoundaryAIpmgzV8Ohi99ImM
Content-Disposition: form-data; name="y" 2
------WebKitFormBoundaryAIpmgzV8Ohi99ImM--

其中,WebKitFormBoundaryAIpmgzV8Ohi99ImM为浏览器随机生成的boundary,作为分隔参数,作用等同于&

application/x-www-form-urlencoded 和 multipart/form-data

The content type "application/x-www-form-urlencoded" is inefficient for sending large quantities of binary data or text containing non-ASCII characters. The content type "multipart/form-data" should be used for submitting forms that contain files, non-ASCII data, and binary data.

multipart/form-data的优势还伴随一些兼容性问题,详细请参考文章结束的参考文献。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

当我们使用ajax去异步请求数据时,会发现通过$.POST处理时数据出现在请求体的form-data,而用$.AJAX去异步请求数据时,数据出现在请求体的request payload。

GET、POST方式提交的请求:

Content-type:

1、application/x-www-form-urlencoded:@RequestBody不是必须加的

2、mutipart/form-data:@RequestBody不能处理这种格式

3、其他格式,比如application/json,application/xml等,必须使用@RequestBody来处理

PUT方式提交的请求:

以上1和3的场景都是必须使用@RequestBody来处理的,2场景也是不支持的

最新文章

  1. 【Win10应用开发】自适应磁贴中的分组
  2. yum
  3. 《SharePoint 2013 应用开发实战》目录
  4. iOS开发——网络篇——HTTP/NSURLConnection(请求、响应)、http响应状态码大全
  5. 11 AlarmHandler定时处理类——Live555源码阅读(一)基本组件类
  6. 批量删除.pyo后缀的文件
  7. Date类型时间转换
  8. -fomit-frame-pointer 编译选项在gcc 4.8.2版本中的汇编代码研究
  9. Html5 常见的新增API详解
  10. 用Time Machine做更换电脑工具
  11. OnePlus One(一加1)刷机Kali Nethunter完整教程
  12. Highcharts 带有数据标签曲线图表
  13. WM_PAINT消息详解,使用InvalidateRect或InvalidateRgn函数刻意产生WM_PAINT消息(WIN7里有变化,“调整视觉效果”,将“启用桌面组合”去掉)
  14. android端从服务器抓取的几种常见的数据的处理方式
  15. PowerShell 并行执行任务
  16. Mongodb基础与入门
  17. Stackoverflow 最受关注的 10 个 Java 问题
  18. Java 中 String 的字面量与 intern 方法
  19. SpringMvc+Mybatis+Maven+Mysql做一个CRUD的简单例子
  20. jenkins安装教程

热门文章

  1. 潭州课堂25班:Ph201805201 周五 (课堂笔记)
  2. (转)【Java线程】Java内存模型总结
  3. SVN解决本地版本控制与服务器版本冲突问题
  4. 常用的机器学习&数据挖掘知识(点)总结
  5. axios 取消请求的方法
  6. ERROR: While executing gem … (Gem::RemoteFetcher::FetchError)
  7. C#高级编程----错误和异常的总结
  8. Toast信息提示:下拉收起(基于jQuery)(app信息提示更新)
  9. 修改文件夹的protection level之后,哪个job会来执行re-stripe的操作呢?
  10. 浅谈常用的几种web攻击方式