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结束, 否则代码会继续执行

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~