[http框架的设计与实现|青训营笔记]
这是我参加「第五届青训营」伴学笔记的第十一天
前言
记录青训营后端专场的学习过程,有不足的地方还请大佬指正。
由于本人基础比较薄弱,所以笔记尽可能的详细。
该文章开始的版本将以简述课程知识点为主,等后面实践有自己的理解后会编辑添加自己的理解。
重谈HTTP协议
HTTP定义
Http:超文本传输协议(即字面意思,为了在网络中传输除文本以外的信息如图片,mp3文件等信息而设置的协议)
需要协议的原因:
正如我们说话一样,我们需要根据特定的语法表达出我们想要的意思。在网络传输中,我们也需要协议来明确传输信息的边界,从哪里开始,从哪里结束,传输的数据是什么类型的。
协议里有什么
在上面例子中,我们可以看出协议主要有三大部分
- 请求行/状态行:请求行由方法名、url、协议版本组成,如上图中POST请求,访问/sis,并且是http/1.1版本。状态行由协议版本,状态码,状态码描述组成,如上图中服务端发送的协议内容的第一行,该状态行描述了该协议版本是http/1.1 状态码为200,并且表示ok的意思。
- 请求头/响应头:请求头和响应头包含了协议相关的键值对,还有自行根据业务设计的一些键值对。如上图中content-length描述了协议相关信息,表示该响应体长度为28。
- 请求体/响应体:即响应/和返回内容,并以换行符结束
请求流程
- 业务层:客户端/服务端根据框架编写业务逻辑,如客户端给服务端发送一起去看电影,服务端根据该信息做出响应发生ok表示答应。
- 服务治理层:比如熔断/限流等,但是依附于中间件层。
- 中间件层:有对请求先处理和后处理的能力,和请求级别绑定。
- 路由层(服务端专属):根据url选择相应的执行方法
- 传输层