一、HTTP协议
1.是什么 (协议内容)
(1)定义
HTTP:(Hypertext Transfer Protocol) 超文本传输协议
超文本指除文本外包括视频、链接等信息
(2)组成
例:
POST/sis HTTP/1.1 //请求行
who:Alex
Content-Type:text/plain
Host:127.0.0.1:8888
Content-length:28 //请求头
Let's watch a movie together //请求体
请求格式与相应格式类似,此处以请求格式为例:
①请求行
方法名、URL、协议版本
②请求头
协议约定、业务相关
③请求体
2.为什么 (协议必要性)
相当于固定的信息交互格式,提供明确的边界、信息类型等等。
3.怎么样 (请求流程)
(1)业务层:利用API实现业务逻辑
(2)中间件层&服务治理层:请求预处理、缓存和性能优化等
(3)路由层
(4)协议编解码层:编译成对方可读取信息的协议
(5)传输层:实现传输
二、HTTP框架设计
1.分层设计(如上)
高内聚、低耦合、易复用、高拓展性...
2.应用层设计
核心:提供合理API
可理解性、简单性、冗余性、兼容性、可测性、可见性...
3.中间件层设计
(以洋葱模型为例)
在洋葱模型中,每一层相当于一个中间件,用来处理特定的功能,比如错误处理、Session 处理等等。其处理顺序先是 next() 前请求(Request,从外层到内层)然后执行 next() 函数,最后是 next() 后响应(Response,从内层到外层),也就是说每一个中间件都有两次处理时机。
4.路由层设计
路由层在HTTP应用程序中起着非常重要的作用,它根据传入的HTTP请求的URL路径和方法,将请求路由到相应的处理程序或控制器,并且能够提取URL中的参数和实现路由拦截等功能。
路由层的灵活性和功能性使得开发人员能够更好地管理应用程序的URL结构和请求处理逻辑,从而实现更加高效和结构化的Web应用程序。
(1)配对HTTP方法
构造多棵路由树作为map的value,key是method;外层map根据method进行初步筛选。
(2)添加多处理函数
在每个节点使用一个list存储handler。
5.协议层设计
重点:抽象合适接口