这是我参与「第三届青训营 -后端场」笔记创作活动的的第6篇笔记
HTTP协议
提到HTTP协议,大家部非常熟悉了AiTP的议是当今使最为广泛的议力一, HTTP是前端与服务端通信的基础做议,大家在学校调程中和大作中暄访该多或少都接锐过,俊这一张图就是一个前后治分离的一个流租图了,前后端间通过HTP清进行通德,那HTP框联负责充的就是时HTP情状的确解折所、根铝时讨诚向的路由技释机的后竞透铜了,也的是图上标出来的这些。除了在学被中的疲用,HTP在企以实际业务锅景中也使用广泛,目前字节跳动内拥的HTTP服务达上万个。
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
能很好的理解理这个协议的一个本质,它就是想传输这类超文本。现在由道我们协我们知道协议是什么了之后,我们可以来思考—下为啥需要协议。
HTTP 协议主要由三大部分组成:
起始行(start line):描述请求或响应的基本信息;
头部字段(header):使用 key-value 形式更详细地说明报文;
消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据。
其中起始行和头部字段并成为 请求头 或者 响应头,统称为 Header;消息正文也叫做实体,称为 body。HTTP 协议规定每次发送的报文必须要有 Header,但是可以没有 body,也就是说头信息是必须的,实体信息可以没有。而且在 header 和 body 之间必须要有一个空行(CRLF)。
HTTP 框架的设计与实现
分层设计 提供合理的 API .可理解性:如ctx. Body 0,ctx.GetBody () 冗余性 不要用ctx.BodyA() 兼容性 ·简单性:如ctx.Request.Header.Peek(key) 可测性 ctx.GetHeader(key) 可见性
不要在文档中说明,很多用户不看文档
中间件设计
Koa的洋葱模型是以next()函数为分割点,先由外到内执行Request的逻辑,然后再由内到外执行Response的逻辑,这里的request的逻辑,我们可以理解为是next之前的内容,response的逻辑是next函数之后的内容,也可以说每一个中间件都有两次处理时机。洋葱模型的核心原理主要是借助compose方法。
路由设计
如何做设计
1.明确需求:考虑清楚要解决什么问题、有哪些需求 2.业界调研:业界都有哪些解决方案可供参考 3.方案权衡:思考不同方案的取舍 4.方案评审:相关同学对不同方案做评审 5.确定开发:确定最合适的方案进行开发