DAY4 HTTP协议入门以及框架构建 | 青训营

69 阅读2分钟

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)

  1. 应用层设计思路:提供的API名字要合理 有意义 且简洁(不要试图在文档中说明 很多用户不看文档 :)
  2. 中间件设计思路:洋葱模型(核心逻辑与通用逻辑分离) 可以实现预处理和后处理
  3. 路由设计思路:第一种方法:用map来匹配 (优点:很快很简单 缺点:只对静态路由有效 当对于有参数的传输时就失效了)第二种方法:利用前缀匹配树 按照前缀挨个匹配 像树形一样向下延展 匹配到最后就可以挨个通过前缀来构建路由

如何做设计

  1. 明确需求:考虑清楚要解决哪些问题 有什么需求
  2. 业界调研:业界都有哪些解决方案可供参考
  3. 方案权衡:思考不同方案的取舍
  4. 方案评审:相关人士对不同方案做评审
  5. 确定开发:确定最合适的方案进行开发