一、走进HTTP协议 1.HTTP是什么 HTTP协议是一种用于从万维网(WWW)服务器传输超文本到本地浏览器的传送协议。超文本是一种文本格式,可以包含链接、图片、视频等多媒体元素。HTTP协议是基于TCP/IP协议的应用层协议,也就是说,它利用TCP/IP协议来建立可靠的连接,并传递数据。 2.HTTP里有什么 HTTP协议里有两种基本的消息类型:请求(request)和响应(response)。请求是由客户端(通常是浏览器)发出的,用来向服务器请求一个资源,比如一个HTML文档或者一张图片。响应是由服务器发出的,用来回复客户端的请求,包含了请求的结果,比如成功或失败,以及请求的资源或者错误信息。 3.HTTP协议的请求流程 HTTP协议的请求流程大致如下: 客户端通过DNS解析服务器的域名,得到服务器的IP地址。 客户端向服务器发起TCP连接,建立三次握手。 客户端发送HTTP请求报文,包含请求行、请求头和请求体。 服务器接收HTTP请求报文,并根据请求行中的方法和路径来处理请求。 服务器发送HTTP响应报文,包含状态行、响应头和响应体。 客户端接收HTTP响应报文,并根据状态行中的状态码来判断响应是否成功。 客户端解析响应体中的数据,并根据需要进行后续操作,比如渲染HTML文档或者发起新的请求。 客户端或服务器根据连接的情况,决定是否关闭TCP连接,断开四次挥手。 二、HTTP协议的分析与设计 1.分层设计 HTTP框架分层设计特点是专注性、扩展性、复用性等。如果按照OSI七层网络模型可以分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,按照TCP/IP四层概念模型分为应用层、传输层、网络层、数据链路层。 2.应用层设计 提供合理的API。API需要可理解性:如 ctx.Body 0,ctx.GetBody (),不要用 ctx. BodyA ()。API尽量简单性: 如 ctx.Request.Header.Peek(key)/ctx. GetHeader (key)。 3.中间件设计
4.路由设计
使用map[string]handlers,如:/a/b/c、/a/b/d/a/:id/c、/*all。使用前缀匹配树方法,如/a/b/c、/a/b/d。匹配HTTP方法可以使用路由映射表Map层Method(String),由前缀树和头结点组成,外层Map根据method进行筛选。如果要添加多处理函数,在每个节点上使用一个list存储handler。
5.协议层设计
6.网络层设计