首页 > 其他分享 >Gin 控制器的继承,自定义方法

Gin 控制器的继承,自定义方法

时间:2024-01-17 11:15:35浏览次数:23  
标签:控制器 baseController 自定义 func gin Context Gin page con

Gin 控制器的继承,自定义方法

1 我们想直接获取到int类型的数据怎么办

/*
	当我们获取Get参数时都时获取到的都是string类型,有时候我们想直接获取到int类型,我们就需要转换,如果需要转换的地方多了也会很麻烦,
	那我们可以怎么办
	
	解决办法很简单,我们可以写一个baseController 来实现这些功能,并且让每一个controller都继承它,这样我们只需要在baseController中实现我们想要实现的方法就行了。
	
*/

2 编写baseController.go

创建一个baseController文件夹

pFFdfFx.png

package baseController

import (
	"github.com/gin-gonic/gin"
	"net/http"
	"strconv"
)

type BaseController struct{}

func (b BaseController) Success(c *gin.Context) {
	c.String(http.StatusOK, "成功")
}

func (b BaseController) Error(c *gin.Context) {
	c.String(http.StatusBadRequest, "失败")
}

// 将获取的get参数转换成int输出
func (b BaseController) GetQueryToInt(c *gin.Context, key string) int {
	data := c.DefaultQuery(key, "1")
	res, _ := strconv.Atoi(data)
	return res
}

3 使用

package api

import (
	"awesomeProject/gin/controllers/baseController"
	"fmt"
	"github.com/gin-gonic/gin"
)

type ApiController struct {
	baseController.BaseController
}

func (con ApiController) Api(c *gin.Context) {
	con.Success(c)
}

// http://127.0.0.1:8000/api/userlist?page=10
func (con ApiController) ApiUserList(c *gin.Context) {
	page := con.GetQueryToInt(c, "page")
	fmt.Printf("type=%T,value=%v", page, page) // 15:17:44 app         | type=int,value=10
	c.String(200, "我是一个api接口userlist")
}

func (con ApiController) ApiPlist(c *gin.Context) {
	c.String(200, "我是一个api接口plist")
}

func (con ApiController) ApiCart(c *gin.Context) {
	c.String(200, "我是一个api接口cart")
}

pFFdXkt.png

标签:控制器,baseController,自定义,func,gin,Context,Gin,page,con
From: https://www.cnblogs.com/chunyouqudongwuyuan/p/17969493

相关文章

  • Gin控制器分离
    Gin控制器分离1函数式/* apiRouters.GET("/",func(c*gin.Context){ c.String(200,"我是一个api接口") }) 这样的一个路由注册我们发现,后面都跟了一个匿名函数,那我们将这个匿名函数全部取出来放在一个固定的地方就可以实现路由和业务逻辑的分离了*/1.1将adminRou......
  • Gin单文件上传以及多文件上传
    Gin单文件上传以及多文件上传1单文件上传funcmain(){router:=gin.Default()//为multipartforms设置较低的内存限制(默认是32MiB)//router.MaxMultipartMemory=8<<20//8MiBrouter.POST("/upload",func(c*gin.Context){file......
  • Gin中间件
    Gin中间件1中间件简介/* Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。*/在gin中的Default的方法中已经有两个中间件了://Defaul......
  • Gin 文件上传 按照日期存储
    Gin文件上传按照日期存储1实现步骤/* 1.获取上传的文件 2.获取后缀名判断类型是否正确.jpg.png.gif.jpeg 3.创建图片保存目录static/upload/20240101 4.生成文件名称和文件保存的目录 5.保存*/2代码//获取当前的日期funcGetDay()string{ template:="......
  • Gin中的Session
    Gin中的Session1Session简单介绍session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而session保存在服务器上。2Session的工作流程当客户端浏览器第一次访问服务器并发送请求时,服务器端会创建一个session对象,生成一个类似于key,value的键值对,然后将va......
  • Gin中的Cookie
    Gin中的Cookie1Cookie简介/* ●HTTP是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何关系的。如果我们要实现多个页面之间共享数据的话我们就可以使用Cookie或者Sessio......
  • GIn入门
    Gin入门1.Gin安装goget-ugithub.com/gin-gonic/gin2.将gin引入到代码中:import"github.com/gin-gonic/gin"2.1(可选)如果使用诸如http.StatusOK之类的常量,则需要引入net/http包:import"net/http"2.2初始化gomodgomodinit/*生成go.mod文件,此命令会在当......
  • FlashDuty Changelog 2023-12-18 | 值班管理、服务日历、自定义操作和邮件集成
    FlashDuty:一站式告警响应平台,前往此地址免费体验!值班管理UI交互优化【个人日程】从头像下拉菜单调整到值班列表页面,快速查看个人值班日程【值班列表】支持原地预览最近一周值班情况,包括当前和下一阶段值班人【值班详情】支持日历模式与时间线模式切换,查看月度计划更方便......
  • 出现了HTTPSConnectionPool(host=‘huggingface.co‘, port=443)错误的解决方法
    在下载huggingface模型的时候,经常会出现这个错误,HTTPSConnectionPool(host=‘huggingface.co’,port=443)。如在下载Tokenizer的时候,tokenizer=AutoTokenizer.from_pretrained("csebuetnlp/mT5_multilingual_XLSum")就会出现以上的错误HTTPSConnectionPool(host=‘hug......
  • Inserting a node at beginning,全局变量头指针【1月16日学习笔记】
    点击查看代码//insertinganodeatbeginning,全局变量头指针#include<iostream>usingnamespacestd;structnode{ intdata; node*next;};node*A;voidinsert(intx){ node*temp=newnode;//创建新节点 temp->data=x; temp->next=A;//新节点尾巴指......