初识HTTP框架|青训营

50 阅读2分钟

一、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.中间件层设计

(以洋葱模型为例)

image.png

在洋葱模型中,每一层相当于一个中间件,用来处理特定的功能,比如错误处理、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.协议层设计

重点:抽象合适接口