最近在调试代码时发现有Request Payload的情况,从网上查一些文件,也都有较多的描述。下面我只是说明一下大家没有注意的地方

关于HTTP请求,都是通过URL及参数向后台发送数据。主要方式有GET, POST。对这两种方式,GET的参数都会放在URL的后面,一般称之为query参数。POST的都放在HTTP的报文BODY里,可以query参数的形式,也可以multipart格式,还有一种JSON格式,即Request Payload格式。

multipart, Request Payload是通过request Header中的ContentType区分的:

multipart格式:ContentType: multipart/form-data;boundary=--xxxxxxx, 注意对multipart的格式都要有boundary做为BODY中的参数分隔符,(关于该格式的讲解以后再写)

Request Payload格式:ContentType: application/json

在后台的处理中对这三种格式的处理是不相同的。

GET格式都在URL后面,以key1=value1&key2=value2的KV格式存在,且不会很长(协议规定为1024个字节,但现在浏览器都会适当加长一些)。后台处理这种参数时可以使用同步处理,因为报文头收到后参数也就收全了。

POST时参数也可以使用上面的KV格式存在,但是会放在报文体中。当数据量不大时,一般也会和报文头一起收到。但数据量大的时会被拆分到多个报文中。因此必须使用异步方式收取。收全后处理同GET相同。

对于multipart格式,需要使用流方式边收边解析,因为有可能是大文件上传。

对于RequestPayload格式,可能也是异步发送(这个没有验证过),但数据量一般不会太大,因此它是一个JSON格式,因此必须等报文收全后才能处理。目前对JSON格式的支持比较普遍,都有相关的函数来解析JSON字符串,直接生成JSON对象,因此这种方式也是最方便的。特别是使用nodejs server时就可以直接在代码中使用了。

最新文章

  1. org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter与org.apache.struts.dispatcher.FilterDispatcher是什么区别?
  2. asp.net记住我功能
  3. 安装及升级node
  4. 类string的构造函数、拷贝构造函数和析构函数
  5. 关于iOS自定义UITabBar的几种方法
  6. Java Annotation 必须掌握的特性
  7. 学习hadoop
  8. C# Socket select模型
  9. 使用VsCode编写和调试.NET Core项目
  10. [Swift]LeetCode85. 最大矩形 | Maximal Rectangle
  11. 修改MariaDB 路径
  12. 内存栅栏(memory barrier):解救peterson算法的应用陷阱
  13. 左查询left join on简单总结
  14. mybatis 一对多的注入 指的是连表查询时候 将不同的查询结果以列表存储对象形式 注入进去 多对一指的是 查询多条结果但都是一样的 只需注入一条
  15. 潭州课堂25班:Ph201805201 redis第四课 (课堂笔记)
  16. bzoj 3560 DZY Loves Math V - 线性筛 - 扩展欧几里得算法
  17. ​ oracle分区表(附带按照月自动分区、按天自动分区)
  18. 匿名内部类访问方法成员变量需要加final的原因及证明(转)
  19. 8K - 圆桌会议
  20. iOS.FBTweak

热门文章

  1. Halcon学习之四:有关图像生成的函数
  2. 虚拟机之 LNMP
  3. Visual C++ Samples-------------Code Project
  4. com线程模型01
  5. QQ、邮箱、手机号 正则验证
  6. 前端html数组去重的方法
  7. Xcode迁移工程常见问题
  8. Windows 环境下于虚拟环境中源码安装 cx_oracle
  9. FZU2282 Wand
  10. Linux查看操作系统版本的几种方式