golang实战使用gin+xorm搭建go语言web框架restgo详解5 控制器C

无论多么先进的框架,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没有做很重的封装,只实现简单的数据响应接口。大家可以自行封装。

前置操作before部分,这一部分主要实现前置操作,当一个控制器里面的方法被访问时,需要进行特别的一些数据处理,比如鉴权,或者参数校验,可以在这个方法里面进行操作,前置操作逻辑不宜太复杂。

l  路由控制函数router,这个函数是必须实现的方法,我们需要在该函数中实现路由配置和映射

业务函数实现,主要通过函数实现,一个控制器通常实现fineOne/query/create/update方法。

扫描二维码关注公众号,回复: 1892016 查看本文章

本文源代码源代码获取地址 https://github.com/winlion/restgo

待提供源代码清单

10.1 restgo后台管理框架

https://github.com/winlion/restgo-admin

10.天天任务清单小程序

https://github.com/winlion/dailytask

10.工业大数据采集

10.restgo cms 

10.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


猜你喜欢

转载自blog.csdn.net/keytounix/article/details/79336546