多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
本篇内容我们对`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` 那么程序就不会继续执行了。