HTTP协议全称超文本传输协议(Hypertext Transfer Protocol)
超文本指的是一个类似text类型的数据 点击可以跳转到图片 mp3 视频等地方的链接
协议需要明确的边界(什么时候开始 什么时候结束) 能够携带信息(什么消息 消息的类型 etc.)
协议的格式:
第一行:请求行/状态行 请求行包含方法名 URL 和协议版本(常见方法名:GET HEAD POST PUT DELETE CONNECT OPTIONS TRACE PATCH) 状态行包括协议版本 状态码 和状态码描述 (状态码信息:1xx信息类 2xx成功 3xx重定向 4xx客户端错误 5xx服务端错误)
第二行:请求头/响应头(包含要传输的信息的信息 信息类型 信息长度 服务器地址 etc.)
第三行:请求体/相应体(包含真正要传输的信息)
如何设计HTTP框架 HTTP框架都是分层设计的 大致可以分为应用层(application) 中间件(middleware) 路由(route) 协议层(codec) 网络层(transport)
- 应用层设计思路:提供的API名字要合理 有意义 且简洁(不要试图在文档中说明 很多用户不看文档 :) )
- 中间件设计思路:洋葱模型(核心逻辑与通用逻辑分离) 可以实现预处理和后处理
- 路由设计思路:第一种方法:用map来匹配 (优点:很快很简单 缺点:只对静态路由有效 当对于有参数的传输时就失效了)第二种方法:利用前缀匹配树 按照前缀挨个匹配 像树形一样向下延展 匹配到最后就可以挨个通过前缀来构建路由
如何做设计
- 明确需求:考虑清楚要解决哪些问题 有什么需求
- 业界调研:业界都有哪些解决方案可供参考
- 方案权衡:思考不同方案的取舍
- 方案评审:相关人士对不同方案做评审
- 确定开发:确定最合适的方案进行开发