golang实战使用gin+xorm搭建go语言web框架restgo详解5.9 控制器controller编程示例

该章节我们以用户管理这一需求为例,阐述如何进行控制器编程。

首先我们分析用户管理需要的接口如下

用户管理模块api描述

编号

请求格式

接口描述

请求数据

响应数据

1

/user/query

根据姓名、电话等注册时间等
最后登陆时间、角色等搜索和统计用户

 

 

2

/user/findOne

根据用户编号获取基础信息

 

 

3

/user/login

根据用户名、密码等进行登录操作

 

 

4

/user/register

用户注册操作

 

 

5

/user/resetpwd

用户重置密码

 

 

6

/user/edit

编辑用户基础信息

 

 

7

/user/profile

用户个人中心页面

 

 

我们以接口1为例说明

1、新建控制器,controller文件夹下新建控制器UserController.go内容如下

package controller
import (
   "restgo/restgo"
)
type UserController struct {
   restgo.Controller
}

2、添加路由映射规则,对UserController结构体扩展如下方法

func (ctrl *UserController)Router(router *gin.Engine){
    r := router.Group("user")

r.Any("query",ctrl.query)
   }

3、实现query方法

func (ctrl *UserController)query(ctx *gin.Context){
   var userArg model.UserArg
   ctx.ShouldBindJSON(&userArg)
   //下面根据userArg拼接sql查询条件获取数据
   //var data = ...
   //最后响应数据列表到前端
   //restgo.ResultList(ctx,data,120)
}

4、重点说明:关于查询用的参数,我们不建议对参数名称采用特殊的处理,我们建议封装到一个结构体里面,如关于用户信息的查询参数,我们封装到UserArg结构体中。

type PageArg struct {
   Kword string `form:"kword"`
   Datefrom time.Time `form:"datefrom" time_format:"2006-01-02 15:04:05"`
   Dateto time.Time   `form:"dateto" time_format:"2006-01-02 15:04:05"`
   Pagesize int       `form:"pagesize" json:"pagesize"`
   Pagefrom int       `form:"pagefrom" json:"pagefrom"  validate:"gte=0"`
   Desc string        `form:"desc" json:"desc"`
   Asc  string        `form:"asc" json:"asc"`
}

type UserArg struct {
   PageArg
   ttype string `form:"ttype" json:"ttype"` 

//用于区分是注册时间还是登陆时间
}

//使用时候

当使用时,我们使用如下方法判断

var userArg model.UserArg

ctx.ShouldBindJSON(&userArg)
if len (userArg.Kword)>0{
   
}  

本文源代码源代码获取地址 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/79336603