Go 框架设计与实现(二)| 青训营笔记

81 阅读6分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天

一、重点内容:

1.1 知识要点有哪些?

  • HTTP协议
  • HTTP框架设计与实现

二、详细知识点介绍:

2.1 HTTP协议

HTTP(超文本传输协议) 是一种用于在万维网上传输超文本文档的应用层协议。 它是WWW(万维网)的核心协议,并且是一个简单、快速和可靠的访问WWW文档的方式。 HTTP是一种客户端/服务器协议,允许Web浏览器(客户端)从服务器请求Web页面。

HTTP协议使用TCP/IP(传输控制协议/因特网协议)协议套接字来传输数据。 它是一种基于请求/响应模型的协议,允许客户端发送一个请求到服务器,然后服务器响应请求并发送数据。 HTTP协议可以使用多种不同的内容类型来传输文档,例如HTML,XML,图像,音频,视频等等。

HTTP协议允许服务器通过发送HTTP头部来指定Web浏览器需要采取的行动,例如缓存文档,对文档进行身份验证或将文档定位到另一个URL。 此外,HTTP协议还可以被扩展来支持功能,比如Cookies,认证,安全连接和浏览器插件等。

为什么需要协议? 协议是一种计算机网络上进行通信的基本语言,它可以提供统一的规则和标准,有效地标准化网络上的互动,确保各个节点的协作能够正常运作。此外,协议能够实现数据传输的安全性和可靠性,保障传输数据的正确性和完整性,并有效地控制数据的流量。

HTTP协议里有什么? HTTP协议包括一些请求(request)和响应(response)方法,例如GET、POST、PUT、DELETE等。它还包括请求头(headers)和响应头(headers),以及状态代码(status code),这些都是用来解释服务器响应的信息。它还可以使用一些内容类型(content type),如HTML、XML、PDF等,来传输不同的文档类型。

2.2 HTTP框架设计与实现

2.2.1 分层设计

HTTP框架使用两个主要的角色:Web服务器和客户端。HTTP框架包括以下几个部分:请求报头,向服务器发送请求;响应报头,从服务器返回信息;请求正文,发送给服务器的附加数据;响应正文,从服务器返回的数据;状态码,表明服务器是否能够执行请求;和内容类型,表示服务器发送的文件类型。

HTTP框架分层设计是一种将HTTP协议抽象为不同层的方法。每个层使用标准的API来访问服务,而且可以被轻松地更改和扩展。分层的实现模型主要由三个部分组成,即应用层、传输层和网络层。应用层是HTTP API的用户,涉及请求处理,传输层用于处理Socket编程的高级特性,网络层主要用于Internet连接管理等

OSI七层网络模型是一种用于描述和定义因特网系统的交互方式的标准。它包含了7个分层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。物理层主要关注如何通过物理媒介来传输比特,数据链路层涉及地址的解析,网络层涉及路由和网络的选择,传输层涉及协议的传输,会话层涉及端口号的解析,表示层涉及数据格式的转换,应用层涉及处理特殊服务,如文件传输和邮件收发。

2.2.2 应用层设计

HTTP框架的应用层设计的主要目的是帮助开发者创建可扩展的、可维护的Web应用。它使用核心技术(如MVC模式)来实现这一目标,并提供了额外的工具(如特定于语言的组件)来提高开发效率。HTTP框架应用层设计提供了一个强大的基础来构建复杂的Web应用,可以轻松处理众多网络上存在的问题,包括性能优化、安全性和可维护性。

2.2.3 中间件设计

HTTP框架的中间件设计是指在客户端和服务器之间发生的一个应用层处理,主要负责处理HTTP请求和响应之间的交互。它的主要功能是将请求过滤、缓存和日志分析等机制统一起来,使服务器可以更高效地处理来自客户端的请求,同时也为开发者提供了一个可扩展的平台,可以根据需要增加额外的功能,如授权、身份验证和内容解析等。 中间件需求:

  • 配合Handler 实现一个完整的请求处理生命周期
  • 拥有预处理逻辑与后处理逻辑
  • 可以注册多中间件
  • 对上层模块用户逻辑模块易用

2.2.4 路由设计

HTTP框架的路由设计是指将客户端请求映射到服务器上不同的处理程序上的过程。它通过映射URL模式和请求方法,把客户端发来的请求映射到合适的处理程序上,使得在处理客户端请求的过程中变得更加容易和灵活。路由设计也可以帮助开发者创建更容易理解的应用程序结构,减少重复代码的概率,减少开发时间,提高整体的程序质量。

在HTTP框架中,匹配HTTP方法的过程一般通过路由设计来实现,即在开发者定义的路由表中匹配客户端发出的请求的URL模式和请求方法,以找到最匹配的处理程序。如果没有能够完全匹配的,则会遵循默认的模式去处理请求,比如对于GET/POST/PUT/DELETE/OPTIONS等方法,则会遵循相应的处理程序。

2.2.5 协议层设计

HTTP框架的协议层设计主要涉及HTTP协议的实现,其目的是实现良好的可靠性和可扩展性。它通过构建解析器、构建响应头和数据结构等技术,实现了HTTP协议中规定的关键特性,使得HTTP请求和响应之间的交互变得更加高效和可靠,同时也改进了可扩展性,以满足要求不断变化的Web应用的需求。

2.2.6 网络层设计

HTTP框架的网络层设计主要是实现一个客户端和服务器之间的互联网通信。它包括三个部分:客户端,网络层,以及服务器。客户端使用HTTP请求发起要求,然后网络层使用TCP或UDP协议处理数据,最后服务器使用HTTP响应处理请求。在网络层,用户能够定义不同的协议,用来传输所需的数据,例如TCP/IP,UDP,SSL等。此外,还需要对通信双方进行身份认证,以及确保所传输的内容的安全性。

三、引用参考

后端入门 - Go 框架设计与实现