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