4.4. 控制器
简介
为了替代在路由文件中以闭包形式定义的所有的请求处理逻辑, 你可能想要使用控制类来组织这些行为。控制器能将相关的请求处理逻辑组成一个单独的类。控制器被存放在 app/Http/Controllers
目录。
控制器
控制器的实现很简单, 只需要实现func(*Context)
方法即可, 参考面向对象语言, 使用结构体 + 方法实现面向对象中的类
, 默认继承BaseController
一些公用的属性和方法可以放在里面
func NewDemoController() *DemoController {
return &DemoController{}
}
type DemoController struct {
controllers.BaseController
}
func (d DemoController) Index(c *gin.Context) {
response.Success(c, consts.HttpStatusOkMsg, gin.H{})
}
go语言没有构造函数的 所以使用NewDemoController
模拟构造函数, 可以在里初始化一些参数
定义路由指向控制器
地址 + 控制器方法很轻松就定义一个指向控制器行为的路由
注意:
Index
后面没有()
e.GET("/index", open.NewDemoController().Index)
artisan 命令创建控制器
在终端窗口打开项目根目录执行命令, 就会在app/Http/Controllers
目录下创建一个test_controller.go
文件
./artisan make:controller test
response
app/utils/responseresponse.go
包内置一些的返回方法, 可以根据使用场景自行在里面添加
返回成功示例
response.Success(c, consts.HttpStatusOkMsg, gin.H{})
返回失败示例
response.Fail(c, consts.HttpStatusFileCode, consts.HttpStatusFileMsg, gin.H{})
注意处理异常返回值
response.Fail
后要加return
结束, 否则代码会继续执行