如何使用中间件
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"如何使用中间件",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用中间件"吧!中间件使用场景:auth权限认证跨域其他需要在业务
千家信息网最后更新 2026年11月02日如何使用中间件
image.png
这篇文章主要讲解了"如何使用中间件",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用中间件"吧!
中间件
使用场景:
auth权限认证 跨域 其他需要在业务处理之前处理的事务
我们接着上一期的工程继续
查看一下目录
➜ go-gin-test tree -L 3
.
├── go.mod
├── go.sum
├── hello
├── mian.go
└── routerex
└── router.go 在routerex目录下新建mid目录 在mid目录下新建mid.go文件
首先我们定义一个中间件。它的作用是在请求到达服务后,但是还未进行业务处理时,需要验证请求是否合法
编辑mid.go
package mid
import (
"github.com/gin-gonic/gin"
)
func midAuth(c *gin.Context) {
//获取请求的ip地址
ip := c.ClientIP()
//如果请求地址来源不正确,那么阻止这个请求继续
if ip != "baidu.com" {
println("ip 地址不正确")c.Abort()return
}
// 处理请求
c.Next()
}
编辑router.go
package routerex
import (
"example.com/m/v2/routerex/mid"
"github.com/gin-gonic/gin"
)
func InitRouter(g *gin.Engine) {
g1 := g.Group("g1")
//中间件
g1.Use(mid.MidAuth)
g1.GET("/hello1", func(c *gin.Context) {
c.JSON(200, gin.H{
"msg": "Hello g1",
})
})
g2 := g.Group("g2")
g2.GET("/hello2", func(c *gin.Context) {
c.JSON(200, gin.H{
"msg": "Hello g2",
})
})
}
执行go build -o hello来编译为可执行文件
➜ go-gin-test go build -o hello
➜ go-gin-test ls
go.mod go.sum hello mian.go 执行./hello让我们的服务跑起来
打开浏览器访问http://localhost:8080/g1/hello1

[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET /g1/hello1 --> example.com/m/v2/routerex.InitRouter.func1 (4 handlers)
[GIN-debug] GET /g2/hello2 --> example.com/m/v2/routerex.InitRouter.func2 (3 handlers)
[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
[GIN-debug] Listening and serving HTTP on :8080
ip 地址不正确
[GIN] 2021/04/06 - 17:00:38 | 200 | 61.658µs | ::1 | GET "/g1/hello1" 可以看到我们的浏览器上没有任何输出
但是在后台日志上,我们看到了我们在代码中打印的ip 地址不正确
通过这个思路,我们可以实现很多业务或者场景的需求。
下面这个代码就是通用的跨域中间件
func midCors(c *gin.Context) {
c.Header("Access-Control-Allow-Origin", c.Request.Header.Get("Origin"))
c.Header("Access-Control-Allow-Headers", "*")
c.Header("Access-Control-Allow-Methods", "*")
c.Header("Access-Control-Allow-Credentials", "true")
//放行所有OPTIONS方法
if c.Request.Method == "OPTIONS" {
c.AbortWithStatus(http.StatusNoContent)
}
// 处理请求
c.Next()
} POST和GET获取值的方式
Parameters in path (url路径参数)
name := c.Param("name")Querystring parameters
//这个写法具有默认值
firstname := c.DefaultQuery("firstname", "Guest") Multipart/Urlencoded Form(表单)
//无默认值
message := c.PostForm("message")
//有默认值
nick := c.DefaultPostForm("nick", "anonymous") Map as querystring or postform parameters(Map或者表单)
ids := c.QueryMap("ids")
names := c.PostFormMap("names") file(文件类型)
form, _ := c.MultipartForm()
files := form.File["upload[]"] JSON
//结构体
j := J{}
c.BindJSON(j) 当然除了上述常用的方式之外,gin还提供的更加丰富的获取参数的方式。
感谢各位的阅读,以上就是"如何使用中间件"的内容了,经过本文的学习后,相信大家对如何使用中间件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
中间件
地址
目录
处理
文件
方式
学习
代码
内容
参数
场景
就是
思路
是在
浏览器
表单
服务
浏览
验证
合法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网加科技
高科技互联网
广州百单互联网科技有限公司
中国互联网科技股
科技与互联网
互联网中国科技
金融科技 互联网金融
小马过河互联网科技
广州互联网络科技有限公司
互联网科技论坛
互联网科技视频素材
甘肃拓世互联网科技有限公司
哈尔滨秒房互联网科技有限公司
互联网为啥属于高科技
乌苏新华互联网科技做什么的
允成互联网科技有限公司融资
恒生互联网科技业指数调整周期
高科技互联网套路
抖集互联网科技技术咨询
互联网科技新闻
今日互联网科技
智能科技公司是互联网公司吗
互联网金融 科技
互联网科技ppt模板
国大互联网教育科技有限公司工作
晋城互联网科技
互联网风格科技公司名称
江苏互联网科技小贷
互联网科技包装股
上海乐五互联网科技有限公司