这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记
在“HTTP框架修炼之道”这一课中,老师在介绍完HTTP协议的基本定义之后,对HTTP协议的内容进行了介绍。在这一篇笔记里,我总结了老师关于HTTP协议内容的介绍。
我们从设计者的层面思考,一个完整的HTTP协议需要有什么?
- 开始标识符与结束标识符 一个用于传输的协议必须要含有明确的边界,这样接收方才能知道什么时候开始接受、接受多少信息、什么时候结束。这样我们就需要为HTTP协议设计出清晰可辨的开始标识符与结束标识符,来指引收方正确接收。
- 可以携带内容 HTTP协议肯定需要能够携带超文本信息发送给接收方,这里就需要设计可以的结构来让传输内容在合适的位置,以方便收方进行高效的解析。
这里介绍现使用的HTTP协议内容,大家可以先自己思考一下如果是自己会如何设计,再和下面的介绍进行比对
- 请求行/状态行 这一部分就是HTTP协议的起始标识符,同时也携带了一定的信息。
对于发方我们称其为请求行,具体结构为:方法名+URL+协议版本
HTTP协议中使用的方法名有GET、HEAD、POST、PUT、DELETE、CONNECT、TRACE、PATCH 其中PATCH和PUT实现的功能类似,区别在于PATCH可以仅更新局部资源;而PUT则是全部更新,需要前端提供完整的资源对象
对于收方我们称其为状态行,具体结构为:协议版本+状态码+状态码描述
-
请求头/响应头 发方叫请求头,收方叫响应头。这里存储的是各种元数据,其存储格式为K-V键值对。其中值得一提的是Content-Length,他的目的是告知数据包的长度,确保对方正确接收,对HTTP后一部分的稳定传输意义重大。
-
空行 这里有一个空行作为标识位,区分元数据与后面的数据包
-
请求体/响应体 发方叫请求体,收方叫响应体。存放的是数据包,他与元数据并不相同。
-
空行*2 最后是两个空行作为结束标识符,告诉收方这一次传输的内容结束了