09.Mygin之错误恢复Recover中间件

本篇是mygin这个系列的最后一篇。如果想自己动手实现一个类似Gin的Web框架,建议从 mgin第一篇开始,总代码行数有效行数只有600多行 github源码 mygin 目的 实现错误处理机制 panic简介在实现错误处理机制之前,我们知道在Go 中,错误的处理方式依靠return返回,由调用者处理。如果是不可恢复的错误,可以手动抛出错误,当然在实际运行中,也会遇到不可处理的错误,比...

发布于 Go从零实现Web框架Mygin教程

08.Mygin中间件优化及logger日志中间件

本篇是mygin的第八篇,参照gin框架,Mygin从零开始完全手写,在实现的同时,带你一窥gin框架的核心原理实现。 目的 中间件Middleware优化 默认log日志中间件在上篇 Mygin实现中间件Middleware 中间件Middleware很生硬,完全依赖循环,如果某个中间件想要cover住全部中间件,比如我想记录,整个请求的耗时时间,以便针对优化的功能。因此需要把之前生硬的方...

发布于 Go从零实现Web框架Mygin教程

07.Mygin中sync.Pool应用

本篇是mygin的第六篇,参照gin框架,感兴趣的可以从 Mygin第一篇 开始看,Mygin从零开始完全手写,在实现的同时,带你一窥gin框架的核心原理实现。 目的 sync.Pool 的作用介绍 mygin中使用sync.Pool sync.Pool 的作用先看看官方文档怎样说的吧,我截取了官方文档的第一句。 12// A Pool is a set of temporary obje...

发布于 Go从零实现Web框架Mygin教程

06.Mygin实现中间件Middleware

本篇是mygin的第六篇,参照gin框架,感兴趣的可以从 Mygin第一篇 开始看,Mygin从零开始完全手写,在实现的同时,带你一窥gin框架的核心原理实现。 目的 实现中间件Middleware在上一篇 Mygin实现分组路由Group 中,实现了路由分组,且同一分组的执行,会先执行Group,有一点点中间件的雏形了。但是中间件不完全还应该提供中断功能,比如一个Group组中添加了aut...

发布于 Go从零实现Web框架Mygin教程

05.Mygin实现分组路由Group

本篇是Mygin第五篇 目的 实现路由分组 为什么要分组分组控制(Group Control)是 Web 框架应该提供的基础功能之一,对同一模块功能的开发,应该有相同的前缀。或者对一部分第三方接口,统一需要加解密等功能。分组后很方便。例如: 对于任务模块,统一前缀为/task 除去/user/login接口,都需要鉴权 以/openapi 开头的接...

发布于 Go从零实现Web框架Mygin教程

04.Mygin实现动态路由

本篇是Mygin的第四篇 目的 使用 Trie 树实现动态路由解析。 参数绑定 前缀树本篇比前几篇要复杂一点,原来的路由是用map实现,索引非常高效,但是有一个弊端,键值对的存储的方式,只能用来索引静态路由。遇到类似hello/:name这动态路由就无能为力了,实现动态路由最常用的数据结构,被称为前缀树。这种结构非常适用于路由匹配。比如我们定义了如下路由: /a&#x...

发布于 Go从零实现Web框架Mygin教程

03.Mygin实现上下文

本篇是Mygin的第三篇 目的 将路由独立出来,方便后续扩展修改 上下文Context,对http.ResponseWriter和http.Request进行封装,实现对JSON、HTML等的支持 路由新建一个router文件,将 Mygin实现简单的路由 中将路由部分复制出来 新建Mygin/router.go 1234567891011121314151617181920...

发布于 Go从零实现Web框架Mygin教程

02.Mygin实现简单的路由

本文是Mygin第二篇 目的: 实现路由映射 提供了用户注册静态路由方法(GET、POST方法) 基于上一篇 Mygin 实现简单Http 且参照Gin 使用了map数组实现简单路由的映射关系 不同的method对应一个组,Gin框架初始化时map时初始化9个,因为支持的http.method刚好为9个 1234567891011121314package http//Gin 中对应的...

发布于 Go从零实现Web框架Mygin教程

01.Mygin实现简单Http

本篇是完全参考gin的功能,自己手动实现一个类似的功能,帮助自己理解和学习gin框架。目的:简单介绍net/http库以及http.Handler接口,实现简单路由请求的功能。 目的 简单介绍net/http库以及http.Handler接口 实现简单路由请求的功能 标准库启动Web服务先看用标准库怎样启动一个web服务 123456789import "ne...

发布于 Go从零实现Web框架Mygin教程



本站由 [PengBin](/) 使用 [Stellar 1.26.3](https://github.com/xaoxuu/hexo-theme-stellar/tree/1.26.3) 主题创建。 本博客所有文章除特别声明外,均采用 [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) 许可协议,转载请注明出处。