当前位置:网站首页>【Go实战基础】gin 如何自定义和使用一个中间件
【Go实战基础】gin 如何自定义和使用一个中间件
2022-07-02 06:33:00 【菜鸟实战】
目录
一、简介
实战场景: gin 如何自定义和使用一个中间件
二、知识点
gin 路由
字符串数组
数组循环
自定义中间件
http 状态码
三、菜鸟实战
马上安排!
1、创建 go文件
/*
* @Author: 菜鸟实战
* @Description: gin 如何自定义和使用一个中间件
*/
// 知识点:
// # gin 路由
// # 字符串数组
// # 数组循环
// # 自定义中间件
// # http 状态码
package main
// 导入包
import (
"fmt"
"github.com/gin-gonic/gin"
"runtime"
)
// IP 授权中间件
func IPAuthMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
// 白名单
whiteIpList := []string{
"127.0.0.1",
}
flag := false
// 获取当前访问 ip, 与白名单 ip做比较
clientIp := c.ClientIP()
fmt.Printf("当前 client ip 为: %s \n", clientIp)
for _, whiteIp := range whiteIpList {
// 验证通过
if clientIp == whiteIp {
flag = true
break
}
}
// 验证未通过
if flag == false {
c.String(401, "client ip % is not in the white ip list", clientIp)
// 需要 abort
c.Abort()
}
}
}
// 主函数
func main() {
// 使用内置函数打印
println("Hello", "菜鸟实战")
println("实战场景: ", "gin 如何自定义和使用一个中间件")
// 初始化
r := gin.Default()
// 使用中间件
r.Use(IPAuthMiddleware())
// 添加 get 路由和回调
r.GET("/g", func(c *gin.Context) {
// 返回的 code 和 字符串返回
c.String(200, "这是一个使用了中间件的方法 \n")
})
// 使用包函数打印
fmt.Printf("版本: %s \n", runtime.Version())
// 启动框架程序, 默认 8080 端口
r.Run()
}
// curl 验证方式
// bind get
// curl -X GET "http://127.0.0.1:8080/g"
2、运行结果
Hello 菜鸟实战
实战场景: gin 如何自定义和使用一个中间件
[GIN-debug] Listening and serving HTTP on :8080
添加 get 路由和回调
菜鸟实战,持续学习!
边栏推荐
- NPOI 导出Word 字号对应
- Call Stack
- Openshift deployment application
- C Baidu map, Gaode map, Google map (GPS) longitude and latitude conversion
- [flask] ORM one-to-one relationship
- 一个经典约瑟夫问题的分析与解答
- Minecraft群组服开服
- Right click menu of QT
- How to realize asynchronous programming in a synchronous way?
- Npoi export word font size correspondence
猜你喜欢
随机推荐
Dip1000 implicitly tagged with fields
判断是否是数独
C language - Blue Bridge Cup - 7 segment code
Zipkin is easy to use
Leetcode sword finger offer brush questions - day 22
Realization of basic function of sequence table
Openshift deployment application
Service de groupe minecraft
Solution and analysis of Hanoi Tower problem
Linux安装Oracle Database 19c RAC
Minecraft air Island service
Benefits of ufcs of D
Sqli labs level 1
Application of kotlin - higher order function
Qt的右键菜单
Gocv boundary fill
Kubesphere virtualization KSV installation experience
Flex layout
Minecraft群组服开服
C# 将网页保存为图片(利用WebBrowser)










