HTTP协议与框架 | 青训营

48 阅读1分钟

HTTP协议

即超文本传输协议,超文本指的是除了文本之外还有图片音频等信息的文本

协议内容

发送端

请求行{方法名URL协议版本请求行\left\{ \begin{matrix} 方法名 \\ URL \\ 协议版本 \end{matrix} \right.
请求头
请求体

image.png

接收端

状态行{协议版本状态码状态码描述状态行\left\{ \begin{matrix} 协议版本 \\ 状态码 \\ 状态码描述 \end{matrix} \right.
响应头
响应体

image.png

HTTP框架

分层设计

应用层:对请求进行抽象
中间件层:预处理,后处理
路由层:提供了原生的操作
协议层:支持的协议
网络层
图示: image.png

应用层设计

和用户打交道,提供合理的api

中间件层设计

实现完整的请求处理生命周期,加上预处理和后处理
洋葱模型:

image.png

路由层设计

为URL匹配对应处理函数
处理不同URL:前缀匹配树
可以识别/a/b/c , /a/b/d , /a/:b/d , /a/:b/f
image.png
再结合HTTP方法:构造一个map,key为method,value为前缀匹配树

协议层设计

抽象出合适的接口

网络层设计

BIO:读数据时会卡在这里
NIO:监听器监听到足够数据后才会唤醒,目的是让Read读取足够的数据,避免阻塞