ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

10-Gin定义控制器

2022-04-09 23:01:16  阅读:152  来源: 互联网

标签:10 控制器 good http Context GoodController func Gin gin


一 自定义控制器

当我们的项目比较大的时候有必要对我们的控制器进行分组,我们采用MVC架构,自定义C层controller,控制器

目录结构

image-20220409215302601

main.go

package main

import (
	"gin_test/routers"
	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	routers.LoadGoodsRouters(r)
	routers.LoadOrderRouters(r)
	routers.LoadUserRouters(r)
	r.Run()
}

routers/goods.go

package routers

import (
	"gin_test/controllers/good"
	"github.com/gin-gonic/gin"

)

func LoadGoodsRouters(r *gin.Engine) {
	r1 := r.Group("/good")
	{
		r1.GET("/", good.GoodController{}.GoodHandler)
		r1.GET("/goodlist", good.GoodController{}.GoodlistHandler)
		r1.GET("/updategood",good.GoodController{}.UpdategoodHandler)
	}
}


routers/order.go

package routers

import (
   "gin_test/controllers/order"
   "github.com/gin-gonic/gin"
)

func LoadOrderRouters(r *gin.Engine)  {
   r1 := r.Group("/oOder")
   {
      r1.GET("/", order.OrderController{}.OrderHandler)
      r1.GET("/orderlist", order.OrderController{}.OrderlistHandler)
      r1.GET("/updateorder", order.OrderController{}.OpdateorderHandler)
   }
}

routers/user.go

package routers

import (
   "gin_test/controllers/user"
   "github.com/gin-gonic/gin"
)

func LoadUserRouters(r *gin.Engine) {
   r1 := r.Group("/user")
   {
      r1.GET("/", user.UserController{}.UserHandler)
      r1.GET("/userlist", user.UserController{}.UserlistHandler)
      r1.GET("/updateuser", user.UserController{}.UpdateuserHandler)
   }
}

controllers/good/good_controller

package good

import (
	"github.com/gin-gonic/gin"
	"net/http"
)
// 定义一个GoodController结构体
type GoodController struct {
}


// 把如下方法绑定给GoodController结构体
func (g GoodController)GoodHandler(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
		"msg": "www.liuqingzheng.top",
	})
}

func (g GoodController)GoodlistHandler(c *gin.Context) {
	c.String(http.StatusOK, "goodlistHandler")
}
func (g GoodController)UpdategoodHandler(c *gin.Context) {
	c.String(http.StatusOK, "updategoodHandler")
}

controllers/order/order_controller

package order

import (
	"github.com/gin-gonic/gin"
	"net/http"
)
// 定义一个OrderController结构体
type OrderController struct {
}


// 把如下方法绑定给OrderController结构体
func (o OrderController)OrderHandler(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
		"msg": "www.liuqingzheng.top",
	})
}

func (o OrderController)OrderlistHandler(c *gin.Context) {
	c.String(http.StatusOK, "orderlistHandler")
}
func (o OrderController)OpdateorderHandler(c *gin.Context) {
	c.String(http.StatusOK, "updateorderHandler")
}

controllers/user/user_controller

package user

import (
	"github.com/gin-gonic/gin"
	"net/http"
)
// 定义一个UserController结构体
type UserController struct {
}


// 把如下方法绑定给UserController结构体

func (u UserController)UserHandler(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
		"msg": "www.liuqingzheng.top",
	})
}

func (u UserController)UserlistHandler(c *gin.Context) {
	c.String(http.StatusOK, "userlistHandler")
}
func (u UserController)UpdateuserHandler(c *gin.Context) {
	c.String(http.StatusOK, "updateuserHandler")
}

二 控制器继承

目录结构

image-20220409220734676

controllers/good/base_controller

package good

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

type BaseController struct {

}

func (b BaseController)Success(c *gin.Context)  {
	c.String(200,"商品成功")
}
func (b BaseController)Error(c *gin.Context)  {
	c.String(200,"商品失败")
}

controllers/good/good_controller

package good

import (
	"github.com/gin-gonic/gin"
	"net/http"
)
// 定义一个GoodController结构体
type GoodController struct {
	BaseController  // 继承BaseController
}


// 把如下方法绑定给GoodController结构体
func (g GoodController)GoodHandler(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
		"msg": "www.liuqingzheng.top",
	})
}

func (g GoodController)GoodlistHandler(c *gin.Context) {
	g.Success(c) // 使用继承的方法
}
func (g GoodController)UpdategoodHandler(c *gin.Context) {
	c.String(http.StatusOK, "updategoodHandler")
}

标签:10,控制器,good,http,Context,GoodController,func,Gin,gin
来源: https://www.cnblogs.com/liuqingzheng/p/16124122.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有