HTTP协议学习|青训营

88 阅读6分钟

再谈HTTP协议

HTTP协议是什么

顾名思义:HTTP为超文本传输协议

HTTP(HyperText Transfer Protocol)被称为超文本传输协议,是因为它最初设计用于在互联网上传输超文本(hypertext)和超媒体(hypermedia)资源。超文本是一种非线性的、链接到其他相关文本的文本,而超媒体则包含文本之外的其他多媒体元素,如图像、音频和视频等。

有如下特点:

  • 请求-响应模型:客户端发送一个HTTP请求给服务器,请求某个资源(例如网页或图像),服务器接收请求后处理,并返回HTTP响应,其中包含请求的资源数据。
  • URI:URI是HTTP中用于标识资源的唯一地址。它通常由URL(Uniform Resource Locator)或URN(Uniform Resource Name)组成。URL是URI的一种常见类型,用于指定资源的位置(如example.com/resource)。
  • 请求方法:HTTP定义了一些常用的请求方法,用于指示请求的操作类型。常见的方法有:GET:请求获取指定资源,POST向服务器提交数据,用于创建新的资源,PUT向服务器上传数据,用于更新指定资源,DELETE:请求删除指定资源.HEAD类似于GET请求,但只返回资源的头部信息,不返回实际数据
  • 请求头和响应头:HTTP请求和响应都包含一系列头部信息,用于传递关于请求或响应的元数据。头部信息包含了各种标识、控制、认证和缓存等信息。这其中也包含传输内容所占的实际字节大小,该信息在包的处理上很重要
  • 状态码:HTTP响应包含一个三位数字的状态码,用于指示请求的处理结果。常见的状态码有:200 OK:请求成功,服务器返回资源。404 Not Found:请求的资源不存在。500 Internal Server Error:服务器内部错误。
  • Cookie:Cokkie是一种在客户端存储数据的机制,用于在不同的HTTP请求之间维持状态,服务器可以在响应中发送Cookie客户端,客户端将其存储,并在后续的请求中发送回服务器
  • 缓存:HTTP支持缓存机制,允许客户端在本地存储资源的副本,以减少对服务器的请求次数,提高性能和效率。
  • HTTPS:HTTPS(HTTP Secure)是HTTP的安全版本,通过使用加密技术(如SSL或TLS)来保护数据的传输安全。它在HTTP和TCP之间添加了一层安全通道,确保数据在传输过程中被加密。

协议里面有什么

image.png

请求流程

image.png

网络分层设计

image.png

image.png

路由层特点

路由层是指在服务端的一部分,用于根据客户端请求的路径来决定如何处理请求并响应相应的资源或操作,路由层通常是Web框架或者Web服务器的组件之一,负责解析请求的URL,并将其与相应的处理程序(Handler)或控制器(Controller)关联起来,从而执行相应的业务逻辑。其支持以下几种功能:

路由匹配:路由层会根据请求的URL路径,将请求映射到与之对应的处理程序。路由可以支持静态路径匹配(如/users)和参数化路径匹配(如/users/{id}),后者可以捕获URL中的变量部分,并将其作为参数传递给处理程序。

HTTP方法:路由层支持指定HTTP请求方法(GET、POST、PUT、DELETE等),从而使不同的请求方法映射到不同的处理程序,实现对资源的不同操作。

中间件:路由层通常支持中间件的使用,中间件是一种类似拦截器的概念,用于在请求处理前后执行一些共用的逻辑,比如身份验证、日志记录、跨域处理等。

路由组:一些框架允许将多个相关的路由规则组织成路由组,从而使代码更加清晰和结构化。

路由的实现上可以通过map表实现,但这一类查找上还是不太方便

通过前缀匹配树(类似字典树)的方式可以快速的查找需要的路由

课后作业

1.为什么HTTP框架做要分层设计?分层设计有哪些优势与劣势。

==优势:==

  • 模块化和可维护性:分层设计将系统拆分为多个模块,每个模块专注于特定的功能。
  • 可重用性:每个层级都被设计为独立的模块,可以在不同的应用场景中重复使用。
  • 灵活性:由于各个层级相互独立,更容易对系统进行扩展或改进。
  • 安全性:分层设计有助于隔离不同层级的功能,从而降低出现安全漏洞的风险

==劣势:==

  • 性能损失:每个层级都需要处理传输的数据,并进行相应的处理。这可能导致一定的性能损失,特别是在处理大量数据或请求时。
  • 复杂性:分层设计可能增加系统的复杂性。
  • 网络开销:在分布式系统中,由于数据需要在不同层级之间传输,可能会增加网络开销,特别是在不同的物理位置之间。

2.现有开源社区HTTP框架有哪些优势与不足。

Go语言中的现有的HTTP框架有以下几种

  1. net/http:Go语言标准库中包含了一个简单但功能强大的HTTP包,可以用来构建基本的HTTP服务器和客户端。虽然不是框架,但足够处理许多HTTP任务,特别适合简单的Web应用。
  2. Gin:Gin是一个快速而轻量级的HTTP框架,具有出色的性能。它提供了丰富的中间件支持,可用于快速构建高性能的Web应用程序和API。
  3. Echo:Echo是另一个快速和轻量级的HTTP框架,类似于Gin,但更加简单和易于上手。
  4. Iris:Iris是一个功能丰富的HTTP框架,提供了大量的工具和功能,用于构建复杂的Web应用程序。
  5. Beego:Beego是一个全功能的Web框架,提供了许多内置组件和工具,用于构建大型的Web应用程序。
  6. Chi:Chi是一个轻量级的、具有高性能的HTTP路由器。虽然不是完整的框架,但它提供了出色的路由功能,适用于构建自定义的HTTP服务。