gin框架入门(五)-自定义控制器以及控制器继承

目录

概述

自定义控制器

控制器继承


概述

大型项目中,一般路由组只配置路由关系,具体业务逻辑是放在控制器里面。

抽离控制器有两种方法:

        一种是直接将路由的控制器函数抽离到其他额文件,在路由中直接调用函数。但是这种方法不可以实现继承。

        另一种是实现控制器的继承。

自定义控制器

定义控制器文件,路由router调用-->控制器

目录结构

project

        |--main.go

        |--routers(目录)

                |--routerGroupInit.go

                |--userRouterGroup.go

        |--controllers(目录)

                |--user(目录)

                        |--userControllers.go

自定义控制器文件--userControllers.go

package user

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

type UserController struct{}

//getUserInfo的控制器
func (con UserController) GetUserInfo(c *gin.Context) {
	username := c.Query("username")
	age := c.Query("age")
	c.JSON(http.StatusOK, gin.H{
		"username": username,
		"age":      age,
	})
}

//postUserAdd的控制器
func (con UserController) PostUserAdd(c *gin.Context) {
	c.String(http.StatusOK, "postUserAdd-xxx")
}

路由使用自定义控制器--userRouterGroup.go

package routers

import (
	"hello/controllers/user"

	"github.com/gin-gonic/gin"
)

func UserRouterGroupInit(r *gin.Engine) {
	userGroup := r.Group("/user")
	{
		userGroup.GET("/userInfo", user.UserController{}.GetUserInfo)
		userGroup.POST("/userAdd", user.UserController{}.PostUserAdd)
	}
}

控制器继承

定义一个含有基础功能的控制器,其他控制器继承基础功能控制器,使用其定义的基础方法。

定义基础功能控制器--baseControllers.go

package user

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

type BaseControllers struct{}

func (con BaseControllers) Success(c *gin.Context) {
	c.String(http.StatusOK, "success")
}

UserControllers继承BaseControllers,使用Success方法--userControllers.go

package user

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

type UserController struct {
	BaseControllers
}

//getUserInfo的控制器
func (con UserController) GetUserInfo(c *gin.Context) {
	username := c.Query("username")
	age := c.Query("age")
	c.JSON(http.StatusOK, gin.H{
		"username": username,
		"age":      age,
	})
}

//postUserAdd的控制器
func (con UserController) PostUserAdd(c *gin.Context) {
	//使用继承BaseControllers的Success方法
	con.Success(c)
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值