框架问题学习
1、gin
1.1、gin框架路由是怎么处理的
在 Gin 中,路由是通过 gin.Default() 或 gin.New() 创建的 *gin.Engine 对象来管理的。gin.Default() 是 gin.New() 的一个封装,它在创建路由对象时会自动添加一个默认的中间件(如日志记录、恢复中间件等)。
流程
1. 接收请求:当一个 HTTP 请求到来时,Gin 会先解析请求的 URL 和 HTTP 方法。
2. 遍历路由树:Gin 会遍历路由树,并根据请求的 URL 和 HTTP 方法在树中寻找匹配的路由规则。
3. 执行匹配的处理函数:一旦找到匹配的路由,Gin 会执行该路由对应的处理函数(Handler)。
4. 执行中间件:如果配置了中间件,Gin 会按顺序执行中间件。中间件可以在路由处理函数之前、之后进行操作。
1.2、gin框架panic后怎么为什么没有中止程序,怎么实现的
Gin 的恢复中间件 (gin.Recovery()) 用于捕获和恢复 panic,防止程序崩溃。
r := gin.New()
r.Use(gin.Recovery()) // 手动启用恢复中间件
它的底层实现利用了 Go 的 defer、recover 和 panic 机制来捕获应用中的异常,防止 panic 导致程序崩溃。