无论多么先进的框架,mvc思想都是值得借鉴的, mvc是模型(model)-视图(view)-控制器(controller)的缩写,他是一种软件设计典范,他用业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,这样做有巨大的好处,他在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。本章节重点阐述controller层.
5.1 控制器定义
控制器文件通常放在controller目录下,控制器struct名和文件名保持大小写一致,并采用驼峰命名(首字母大写)。
一个典型的控制器类定义如下:
//PageController.go
package controller
import (
"restgo/restgo"
"github.com/gin-gonic/gin"
"net/http"
"fmt"
)
type PageController struct {
restgo.Controller
}
//前置操作
func (ctrl *PageController)before() gin.HandlerFunc {
return func(ctx *gin.Context) {
uri := ctx.Request.RequestURI
fmt.Print(uri)
if 1==1{
ctx.Next()
}
return
}
}
func (ctrl *PageController)Router(router *gin.Engine){
router.GET("/",ctrl.showIndex)
r := router.Group("page").Use(ctrl.before())
r.POST("create",ctrl.create)
r.POST("update",ctrl.update)
r.POST("query",ctrl.query)
r.POST("delete",ctrl.delete)
r.POST("findOne",ctrl.findOne)
}
func (ctrl * PageController) create(ctx *gin.Context){
ctrl.Data = []int{1,2,3}
ctrl.AjaxData(ctx)
}
func (ctrl * PageController) showIndex(ctx *gin.Context){
ctx.HTML(http.StatusOK,"panel/index.html","")
}
func (ctrl *PageController)delete(ctx *gin.Context){
}
func (ctrl *PageController)update(ctx *gin.Context){
}
func (ctrl *PageController)query(ctx *gin.Context){
}
func (ctrl *PageController)findOne(ctx *gin.Context){
}
控制器文件分为四部分
l struct定义部分,一般我们让控制器和restgo.Controller拥有同样的方法即可。restgo.Controller没有做很重的封装,只实现简单的数据响应接口。大家可以自行封装。
l 前置操作before部分,这一部分主要实现前置操作,当一个控制器里面的方法被访问时,需要进行特别的一些数据处理,比如鉴权,或者参数校验,可以在这个方法里面进行操作,前置操作逻辑不宜太复杂。
l 路由控制函数router,这个函数是必须实现的方法,我们需要在该函数中实现路由配置和映射
业务函数实现,主要通过函数实现,一个控制器通常实现fineOne/query/create/update方法。
本文源代码源代码获取地址 https://github.com/winlion/restgo
待提供源代码清单
10.1 restgo后台管理框架
https://github.com/winlion/restgo-admin
10.2 天天任务清单小程序
https://github.com/winlion/dailytask
10.3 工业大数据采集
10.4 restgo cms
10.5 restgo 千人大群
golang实战使用gin+xorm搭建go语言web框架restgo详解1.1 go语言的困境
golang实战使用gin+xorm搭建go语言web框架restgo详解1.2 我要做什么
golang实战使用gin+xorm搭建go语言web框架restgo详解2 框架基本架构
golang实战使用gin+xorm搭建go语言web框架restgo详解3 系统常用配置参数
golang实战使用gin+xorm搭建go语言web框架restgo详解4 路由配置
golang实战使用gin+xorm搭建go语言web框架restgo详解5 控制器C
golang实战使用gin+xorm搭建go语言web框架restgo详解5.2 跳转和重定向
golang实战使用gin+xorm搭建go语言web框架restgo详解5.3 资源控制器
golang实战使用gin+xorm搭建go语言web框架restgo详解5.4 控制器参数绑定
golang实战使用gin+xorm搭建go语言web框架restgo详解5.5 控制器模型绑定
golang实战使用gin+xorm 搭建 go语言web框架restgo搭建详解5.6 控制器参数校验
Golang go语言整合gin+xorm 搭建 web框架restgo搭建详解5.7 控制器数据响应
golang实战使用gin+xorm搭建go语言web框架restgo详解5.9 控制器controller编程
golang实战使用gin+xorm搭建go语言web框架restgo详解6.1 模型M和Orm
golang实战使用gin+xorm搭建go语言web框架restgo详解6.4 推荐编程方式
golang实战使用gin+xorm搭建go语言web框架restgo详解7 视图层V
golang实战使用gin+xorm搭建go语言web框架restgo详解8 关于模板
golang实战使用gin+xorm搭建go语言web框架restgo详解9 session、日志、鉴权
作者简介:胡文林,持续创业者,长期从事技术开源工作。微信号jiepool-winlion