首页 > 其他分享 >gin的基础及其简单封装

gin的基础及其简单封装

时间:2024-09-21 11:51:00浏览次数:8  
标签:封装 框架 中间件 token fresh 简单 gin 路由

文章目录

自我介绍

大家好,我是 Gin。在 Go 语言的 Web 开发领域,我可是一位实力强劲的伙伴呢。
我以高性能和简洁高效著称。在处理 HTTP 请求时,我速度飞快,能够轻松应对高并发的场景。无论是小型项目还是大型的企业级应用,我都能游刃有余地发挥作用。
我的设计理念强调简洁性。我的 API 简洁明了,易于学习和使用。开发人员可以快速上手,用最少的代码实现强大的功能。我提供了丰富的中间件,可以方便地处理各种常见的 Web 开发任务,如请求日志记录、错误处理、身份验证等。
我还具备良好的路由机制。可以轻松地定义不同的 HTTP 方法和路径,将请求准确地路由到相应的处理函数。这使得项目的结构更加清晰,易于维护。
对于测试,我也提供了便捷的支持。开发人员可以轻松地编写单元测试和集成测试,确保应用的稳定性和可靠性。
总之,如果你正在进行 Go 语言的 Web 开发,选择我 ——Gin,我将助你高效地构建出高性能、可靠的 Web 应用。

gin的优势

Gin 框架与其他框架相比,具有以下显著优势:

高性能
简洁易用
丰富的中间件支持
良好的错误处理
强大的路由功能
活跃的社区和良好的文档

gin框架 官方文档链接

gin的包 :

"github.com/gin-gonic/gin"

gin框架基础模块
在这里插入图片描述

package main

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

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run() // 监听并在 0.0.0.0:8080 上启动服务
}
持续化刷新界面 安装可以用 fresh来启动
  1. 安装fresh 库
go get github.com/pilu/fresh

2.进入项目的 根目录

fresh

fresh 将会自动运行项目的 main.go 热加载大功告成。

可以把gin框架来实现beego框架的封装

在这里插入图片描述

gin框架的中间件

package middleware

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

func AuthMiddleware() gin.HandlerFunc {
	//中间件
	return func(c *gin.Context) {
		//从请求头中获取token信息
		token := c.GetHeader("token")
		if token == "" {
			c.JSON(http.StatusUnauthorized, gin.H{
				"code": "-1",
				"data": "token不能为空",
			})
			c.Abort() //中止请求处理流程
			return
		}

		userId, err := pkg.GetJwtToken(token)
		if err != nil {
			c.JSON(http.StatusUnauthorized, gin.H{
				"code": "-1",
				"data": "token解析失败",
			})
			c.Abort()
			return
		}
		c.Set("userId", userId)
		c.Next()

	}
}

路由
	//路由
func InItRouter() *gin.Engine {
	r := gin.Default()
	r.GET("/user/login", conteroller.UserLogin) //用户登录
	r.Use(middleware.AuthMiddleware())          //中间件

	r.POST("/video/create", conteroller.VideoCreate) //视频添加
	r.GET("/video/list", conteroller.VideoList)      //视频列表
	return r
}

//使用中间件
userId, _ := c.Get("userId")

gin框架返回

c.JSON(http.StatusOK, gin.H{
		"code":    0,
		"message": "success",
	})
	return

标签:封装,框架,中间件,token,fresh,简单,gin,路由
From: https://blog.csdn.net/2301_76439627/article/details/142413864

相关文章

  • Framework + plugin架构
    DataX/introduction.mdatmaster·alibaba/DataX·GitHubhttps://github.com/alibaba/DataX/blob/master/introduction.md 为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数......
  • kedro package 命令内部处理简单说明
    kedropackage是一个比较方便的能力,可以将我们开发的datapipeline打包为python包,方便分发以及使用,以下简单说明下内部实现参考内部处理代码可以看到内部并没有特殊的地方,对于标准pythonwhl文件基于了build模块进行构建,对于配置部分使用了tar命令进行处理......
  • 元学习的简单示例
    代码功能模型结构:SimpleModel是一个简单的两层全连接神经网络。元学习过程:在maml_train函数中,每个任务由支持集和查询集组成。模型先在支持集上进行训练,然后在查询集上进行评估,更新元模型参数。任务生成:通过create_task_data函数生成随机任务数据,用于模拟不同的学习任务......
  • [leetcode刷题]面试经典150题之3删除有序数组中的重复项(简单)
    题目 删除有序数组中的重复项给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k ,你......
  • [leetcode刷题]面试经典150题之5多数元素元素(简单)【附Boyer-Moore 投票算法(摩尔投票法
    很有意思的一个题,想了半天没想出来,最后发现两行代码就做出来了。写完后学习到还可以用Boyer-Moore投票算法,能减小空间复杂度,我把它写在后面,可以进一步学习。题目  多数元素给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊......
  • springintegration handle message with messagid between three channels
    InSpringIntegration,handlingamessageacrossmultiplechannelswhilepreservingamessageId(orsimilaridentifier)canbeachievedbyleveragingmessagerouting,channels,andcustommessageheaders.Here’showyoucanrouteandprocessmessagesbetw......
  • 一些本影演算的简单应用
    根据这篇文章第一节的分析,对于任意数列\(\{a_n\}\),存在一个线性泛函\(L\)满足\(L(z^n)=a_n\)(在这里因为没有对线性泛函\(L\)的分析,所以使用正常记号),这说明了基本的本影演算本身的严谨性.对于\(L(z^n)=a_n\),称\(z\)是数列\(\{a_n\}\)的本影(umbra),通过\(L(z^n)\)对数......
  • Nginx反向代理出现502 Bad Gateway问题的解决方案
    ......
  • 23种设计模式,纯简单理解,面试必备
    文章目录创建型设计模式1.单例设计模2.工厂设计模式3.抽象工厂设计模式4.建造者设计模式5.原型设计模式结构型设计模式1.适配器设计模式2.桥接设计模式3.组合设计模式4.装饰器设计模式5.外观设计模式6.享元设计模式7.代理设计模式行为型设计模式1.访问者设计模式2.模板......
  • 使用docker-compose搭建数Archery据库审核平台并简单测试
    Archery是一个开源的数据库审核平台,在日常数据库操作中,可以对操作进行审核。官网:https://archerydms.com/https://gitee.com/rtttte/Archery目前有业务使用需求,先用docker-compose部署,后期考虑配置到k8s上。目前最新版本是v1.11.3参考文档 https://archerydms.com/installation/do......