一步一步分析Gin框架路由源码及radix tree基数树

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

Gin 简介

Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance – up to 40 times faster. If you need smashing performance, get yourself some Gin.

– 这是来自 github 上 Gin 的简介

Gin 是一个用 Go 写的 HTTP web 框架,它是一个类似于 Martini 框架,但是 Gin 用了 httprouter 这个路由,它比 martini 快了 40 倍。如果你追求高性能,那么 Gin 适合。

当然 Gin 还有其它的一些特性:

  • 路由性能高
  • 支持中间件
  • 路由组
  • JSON 验证
  • 错误管理
  • 可扩展性

Gin 文档:

Gin 快速入门 Demo

我以前也写过一些关于 Gin 应用入门的 demo,在这里

Gin v1.7.0 , Go 1.16.11

官方的一个 quickstart

Copypackage main

import "github.com/gin-gonic/gin"

// https://gin-gonic.com/docs/quickstart/
func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})

	r.Run() // 监听在默认端口8080, 0.0.0.0:8080
}


上面就完成了一个可运行的 Gin 程序了。

分析上面的 Demo

第一步:gin.Default()

Engine struct 是 Gin 框架里最重要的一个结构体,包含了 Gin 框架要使用的许多字段,比如路由(组),配置选项,HTML等等。

New()Default() 这两个函数都是初始化 Engine 结构体。

RouterGroup struct 是 Gin 路由相关的结构体,路由相关操作都与这个结构体有关。

image-20220301201700209

  • A. Default() 函数

这个函数在 gin.go/Default(),它实例化一个 Engine,调用 New() 函数:

Copy// https://github.com/gin-gonic/gin/blob/v1.7.0/gin.go#L180

// 实例化 Engine,默认带上 Logger 和 Recovery 2 个中间件,它是调用 New()
// Default returns an Engine instance with the Logger and Recovery middleware already attached.
func Default() *Engine {
	debugPrintWARNINGDefault() // debug 程序
    engine := New() // 新建 Engine 实例,原来 Default() 函数是最终是调用 New() 新建 engine 实例
	engine.Use(Logger(), Recovery()) // 使用一些中间件
	return engine
}

Engine 又是什么?

  • B. Engine struct 是什么和 New() 函数:

gin.go/Engine:

Engine 是一个 struct 类型,里面包含了很多字段,下面代码只显示主要字段:

Copy// https://github.com/gin-gonic/gin/blob/v1.7.0/gin.go#L57

// gin 中最大的一个结构体,存储了路由,设置选项和中间件
// 调用 New() 或 Default() 方法实例化 Engine struct
// Engine is the framework's instance, it contains the muxer, middleware and configura
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值