Gin 框架的执行流程

gin · 浏览次数 : 0

小编点评

**Gin框架的 HTTP 请求处理流程** 1. **初始化 Gin引擎** - 创建一个新的 Gin Engine 实例。 2. **启动服务器** - 使用 `http.ListenAndServe()` 或 `http.Server` 监听指定的端口,启动服务器。 3. **接收请求** - 当客户端发起请求时,操作系统通过 TCP 连接将请求传递给服务器。 4. **路由匹配** - httprouter 解析请求的 URL 路径,并尝试匹配预先注册的路由规则。 5. **中间件执行** - 中间件是通过闭包实现的,用于执行认证、日志记录等操作。 6. **执行 handler** - 请求到达具体的路由处理函数,执行业务逻辑。 7. **响应客户端** - 处理函数完成操作后,通过 `c.Writer` 向客户端发送响应。 8. **资源释放** - 请求处理完成后,任何打开的资源(如数据库连接)会被关闭,完成HTTP 连接的生命周期。 **并发模型** Gin 的并发模型利用了 Go 的 goroutines 和 channels,确保在高负载下也能保持良好的性能。 **性能优化** - 轻量级设计,高效性使其成为构建 RESTful API 和服务的流行选择。 - 使用 Go 的 goroutines 和 channels 优化了并发处理。 - 中间件可以用于执行异步操作,提高性能。

正文

 

Gin框架是一个用Go语言编写的高性能Web框架,它基于httprouter实现,具有快速、简洁和高效的特性。

以下是Gin框架处理HTTP请求的大致执行流程:

1 初始化Gin引擎:

  用户创建一个新的gin.Engine实例,这通常是应用程序的主路由器。
  用户定义路由,这些路由是通过engine.Use()添加中间件和engine.GET(), engine.POST()等方法定义的。

 

2 启动服务器:

  Gin使用http.ListenAndServe()或http.Server监听指定的端口,开始接受HTTP请求。

 

3 接收请求:

  当客户端发起请求时,操作系统通过TCP连接将请求传递给服务器。

 

4 路由匹配:

  httprouter开始解析请求的URL路径,并尝试匹配预先注册的路由规则。
  如果匹配成功,httprouter将请求上下文和处理函数传递给Gin。

 

5 中间件执行:

  Gin的中间件是通过闭包实现的,它们被组织成一个链条。
  每个中间件会调用c.Next()来传递控制权给下一个中间件,直到达到实际的处理函数。
  中间件可以用来进行认证、日志记录、请求验证、响应修改等操作。

 

6 执行handler:

  最终,请求到达具体的路由处理函数,执行业务逻辑。

 

7 响应客户端:

  处理函数完成操作后,通过c.Writer向客户端发送响应。
  c.Writer可以设置状态码、写入响应头和响应体。

 

8 资源释放:

请求处理完成后,任何打开的资源(如数据库连接)会被关闭,完成HTTP连接的生命周期。

 

这个流程中,Gin的并发模型利用了Go的 goroutines 和 channels,使得在高负载下也能保持良好的性能。
Gin的轻量级设计和高效性使其成为构建 RESTful API 和服务的流行选择。

 

Ref:Gin 框架是怎么使用 net http 包的(gin.go)

Link:https://www.cnblogs.com/farwish/p/18209173

与Gin 框架的执行流程相似的内容:

Gin 框架的执行流程

Gin框架是一个用Go语言编写的高性能Web框架,它基于httprouter实现,具有快速、简洁和高效的特性。 以下是Gin框架处理HTTP请求的大致执行流程: 1 初始化Gin引擎: 用户创建一个新的gin.Engine实例,这通常是应用程序的主路由器。 用户定义路由,这些路由是通过engine.

Gin中间件开发

Gin是一个用Go语言编写的Web框架,它提供了一种简单的方式来创建HTTP路由和处理HTTP请求。中间件是Gin框架中的一个重要概念,它可以用来处理HTTP请求和响应,或者在处理请求之前和之后执行一些操作。 以下是关于Gin中间件开发的一些基本信息: - **中间件的定义**:在Gin中,中间件是

Gin 中间件

中间件 在Gin框架中,中间件(Middleware)指的是可以拦截http请求-响应生命周期的特殊函数,在请求-响应生命周期中可以注册多个中间件,每个中间件执行不同的功能,一个中间执行完再轮到下一个中间件执行。 中间件的常见应用场景如下: 请求限速 api接口签名处理 权限校验 统一错误处理 Gi

Gin 框架是怎么使用 net http 包的(gin.go)

Gin 框架是基于 Go 语言的标准库 net/http 构建的,它使用 net/http 提供的基础功能来构建自己的高性能 Web 应用框架。 具体来说,Gin 使用 net/http 的以下方面: 1,HandlerFunc: Gin 使用 net/http 的 HandlerFunc 类型,这

[golang]在Gin框架中使用JWT鉴权

什么是JWT JWT,全称 JSON Web Token,是一种开放标准(RFC 7519),用于安全地在双方之间传递信息。尤其适用于身份验证和授权场景。JWT 的设计允许信息在各方之间安全地、 compactly(紧凑地)传输,因为其自身包含了所有需要的认证信息,从而减少了需要查询数据库或会话存储

摸鱼快报:golang net/http中的雕虫小技

以后会开一个板块,摸鱼快报,快速记录这几周开发中雕虫小技。 1. 向开发环境localhost:3000种植cookie 前端使用Create React App脚手架,默认以localhost:3000端口启动; 后端使用golang-gin框架,使用8034端口启动。 登录模块走的是sso,前后

验证来自微信服务器的消息

内容来自微信官方文档。 接入微信公众平台开发,开发者需要按照如下步骤完成: 填写服务器配置 验证服务器地址的有效性 依据接口文档实现业务逻辑 微信官方的文档已经写得很详细,官方给出的例子是基于php的,这里给出go实现的消息验证,http框架使用的是gin。 type WeChatVerify st

gin启动https支持

gin是一个使用Go语言开发的Web框架,具有运行速度快,分组的路由器,良好的崩溃捕获和错误处理,支持中间件等。 在工作中有时候需要支持https服务,gin可以通过中间件的方式来提供对https的支持,这里使用的是secure来提供https服务支持。这里给出一个简单的使用示例: 示例代码 pac

Gin 获取请求参数

1、获取URL?后的参数(不区分请求方式) // 获取请求url ? 后的参数(url:8080/add?name=kelvin) func GetUrlParam(ctx *gin.Context) { name := ctx.Query("name") defaultName := ctx.De

Gin 响应方式

响应 1. 字符串方式 r.GET("/user/save", func(ctx *gin.Context) { ctx.String(http.StatusOK, "this is a %s", "ms string response") }) 2. JSON方式 r.GET("/user/sav