本篇内容我们对`GoHub`的请求的生命周期做大致的介绍,以便于开发者了解整个执行流程。
## 1.入口文件
用户发起的请求都会经过应用的入口文件,通常是`main.go`文件,这也是`Go`要求的。
**通常,我们不建议在应用入口文件中加入过多的代码,尤其是和业务逻辑相关的代码。**
在`main.go`中的`main`的方法会依次执行下面操作:
* 加载`cmd`命令;
* 加载配置文件;
* 初始化日志
* 设置 `Gin` 的运行模式,支持 `debug`, `release`, `test`
* `new` 一个 `Gin Engine` 实例
* 初始化`DB`
* 初始化`Redis`;
* 注册错误和异常处理机制;
* 初始化路由绑定;
* 运行服务;
## 2.分发请求
项目 API 路由,都会统一放在 routes/api.go 文件中。一个基础的示例路由如下:
```
// Package routes 注册路由
package routes
import (
"net/http"
"github.com/gin-gonic/gin"
)
// RegisterAPIRoutes 注册网页相关路由
func RegisterAPIRoutes(r *gin.Engine) {
// 测试一个 v1 的路由组,我们所有的 v1 版本的路由都将存放到这里
v1 := r.Group("/v1")
{
// 注册一个路由
v1.GET("/", func(c *gin.Context) {
// 以 JSON 格式响应
c.JSON(http.StatusOK, gin.H{
"Hello": "GoHub!",
})
})
}
}
```
## 10.响应输出
控制器调用后的返回数据通过`response`包操作,其中包括`ShowError` `ShowSuccess`两个方法,与`PHP`框架不同的是无需`return` 你可以在任何地方输出如下示例进行返回,如果返回后跟随`return` 那么程序就不会继续执行了。
- 序言
- 基础
- 安装GoHub
- 目录结构
- 开发规范
- 部署项目
- 架构
- 架构总览
- 生命周期
- 配置
- 配置介绍
- 配置目录
- 配置格式
- 配置加载
- 读取配置
- 动态配置
- 环境变量配置
- 路由
- 路由模式
- 路由定义
- 路由参数
- 路由分组
- 路由限流
- 路由拆分
- 控制器
- 控制定义
- 控制器初始化
- 中间件
- Make创建控制器
- 请求
- 请求信息
- 数据库
- 连接数据库
- 基本使用
- Make创建模型
- 日志
- 介绍
- 日志驱动
- 日志写入
- HTTP日志
- 数据库请求日志
- 错误和调试
- Debuger调试器
- 验证
- 验证器
- 验证规则
- Make创建验证器
- 杂项
- 缓存
- 分页
- 验证码
- CURL请求
- 命令行
- 基础知识
- console 包
- Cobra 基础
- 命令行模式
- 附录
- 配置参考
- 第三方依赖库