思路

在基于 Gin 封装出属于自己的 Web 框架前,你需要先了解 Gin 的基本用法和设计理念。

然后,你可以通过以下步骤来封装自己的 Web 框架:

  1. 封装路由:Gin 的路由是通过 HTTP 方法和 URL 路径进行匹配的,你可以根据自己的需求,封装出符合应用的业务需求的路由。你可以考虑将路由进行分类,例如公共路由、私有路由等,以方便管理。
  2. 封装中间件:Gin 提供了很多中间件,例如日志记录、身份验证、跨域支持等,你可以根据自己的需求,自定义一些中间件,并将其封装到自己的框架中。这将提高应用程序的可维护性和可扩展性。
  3. 封装控制器:通过封装控制器,你可以将业务逻辑与路由进行分离,使代码更加模块化和可复用。你可以根据自己的需求,将控制器进行分类,例如用户控制器、订单控制器等。
  4. 封装数据库 ORM:ORM 是操作数据库的重要组件,你可以根据自己的需求,选择一个适合自己的 ORM 框架,并将其封装到自己的框架中。

设计理念与目标

框架设计理念和目标是提供简化和抽象的编程接口,使开发者能够更加高效和方便地构建应用程序。

主要涉及到几个方面:

  1. 提高开发效率:封装框架隐藏了复杂性,并提供了简洁而易用的接口。开发者可以通过使用框架提供的功能和组件,减少重复性的工作和代码编写,从而提高开发效率。
  2. 规范化开发:封装框架通常会提供一套规范和最佳实践,帮助开发者编写结构清晰、可维护和可扩展的代码。这有助于保持项目的一致性,减少错误和代码质量问题。
  3. 提供安全性和稳定性:封装框架通常会提供一些安全性和稳定性方面的功能或机制,如输入验证、防止常见的安全漏洞等。这有助于减少开发者在开发过程中的安全风险,并提供更可靠的应用程序。
  4. 抽象底层细节:封装框架可以隐藏底层的技术细节和复杂性,使开发者能够更专注于业务逻辑的实现。这使得开发者可以更轻松地应对技术变化和更新,而无需深入了解底层实现。
  5. 提供可扩展性和灵活性:封装框架通常提供一些扩展点或接口,使开发者能够根据自己的需求进行定制和扩展。这使得应用程序能够适应不同的场景和需求,并具备一定的灵活性。

封装框架的目标是简化开发过程,提高开发效率,并提供安全性、稳定性和可扩展性。

通过使用封装框架,开发者可以更专注于业务逻辑的实现,而无需过多关注底层技术细节。同时,封装框架也有助于提高代码质量、保持一致性,并提供一些通用的功能和最佳实践。

自研课程

第一章:了解 Gin 框架

  • 1.1 Gin 框架介绍与特点
  • 1.2 安装与初始化 Gin
  • 1.3 路由和中间件基础

第二章:构建自己的 Web 框架

  • 2.1 框架设计理念与目标
  • 2.2 项目目录结构规划
  • 2.3 配置管理与环境切换

第三章:核心功能实现

  • 3.1 实现服务启动时可选的配置项
  • 3.2 实现异常捕获与告警
  • 3.3 实现错误处理与告警
  • 3.4 实现链路日志记录
  • 3.5 包装 gin IRoutes
  • 3.6 包装 gin Context
  • 3.7 定义统一错误码与错误信息语言包
  • 3.8 定义接口返回数据规范

第四章:第三方组件集成

  • 4.1 集成 gorm 进行 MySQL 数据库操作,并支持主从数据库配置
  • 4.2 集成 redis 进行 Redis 数据库操作
  • 4.3 集成 mongo 进行 MongoDB 数据库操作
  • 4.4 集成 resty 进行 HTTP 接口调用
  • 4.5 集成 jwt 实现身份认证及验证中间件
  • 4.6 集成 swagger 实现自动生成接口文档
  • 4.7 集成 aes 对称加密算法
  • 4.8 集成 rsa 非对称加密算法
  • 4.9 集成 snowflake 实现生成唯一 ID
  • 4.10 集成 cors 实现允许前端跨域请求
  • 4.11 集成 prometheus 客户端实现注册和暴露指标
  • 4.12 集成 pprof 实现应用程序性能分析
  • 4.13 集成 gin 开发环境下实现代码的热更新部署

第五章:RESTful API 设计与实现

  • 5.1 资源映射和路由设计
  • 5.2 自定义编写中间件及使用
  • 5.3 请求参数解析与验证
  • 5.4 基本 CRUD 操作的实现
  • 5.5 运行使用与编译成二进制文件

第六章:加餐

  • 6.1 关于 10 个框架设计的实践
  • 6.2 Go 开发者成长路线
  • 6.3 MySQL 研发规范
  • 6.4 Redis 研发规范
  • 6.5 Git 使用规范
  • 6.6 RESTful API 规范

查看下发链接可进行查看 ~

https://xiaobot.net/post/e9f7ef4c-81b1-4ffc-9053-bec55c3abb12

最近新搞了一个 免费的知识星球 ,会在上面分享相关技术知识,比如:Go 语言、编程框架与库、架构知识 等等,欢迎大家来围观 ~

免费星球:https://t.zsxq.com/16UYcyC7a


程序员新亮
2.9k 声望1.2k 粉丝

GitHub 9K+ Star,其中适合 Go 新手的开箱即用项目 go-gin-api 5.2K Star:[链接],联系我:wx-xinliang