欧美日韩偷拍天堂网_一本到无码精品手机字幕在线播放_国产高潮一区二区三区_精品一区三区三区在线观看_亚洲人堂在线观看

Golang?Gin局部和全局中間件使用詳解

來源:腳本之家

2023-04-28 05:59:18

目錄
中間件1. 全局中間件 2.局部中間件

中間件

中間件是放在客戶端和服務(wù)端的中間。

當(dāng)你的客戶端對(duì)某個(gè)接口發(fā)起一個(gè)請(qǐng)求,但是在到達(dá)接口2之前,這里是有一層中間件的處理。


【資料圖】

一般常用的就是處理跨域,比如處理登入的驗(yàn)證token,接口返回的信息比較敏感,說白了就是需要做鑒權(quán)。其實(shí)也就是防止別人刷你接口,拿到你的數(shù)據(jù)。

也就是你必須攜帶正確的token,讓中間件去做驗(yàn)證,做完驗(yàn)證之后再去處理這個(gè)接口的邏輯。

Gin框架允許開發(fā)者在處理請(qǐng)求的過程中,加入用戶自己的鉤子(Hook)函數(shù)(鉤子函數(shù)其實(shí)就是中間件)。這個(gè)鉤子函數(shù)就叫中間件,中間件適合處理一些公共的業(yè)務(wù)邏輯 ,比如 登錄認(rèn)證 、 權(quán)限校驗(yàn) 、數(shù)據(jù)分頁(yè)、記錄日志、耗時(shí)統(tǒng)計(jì)等(比如微服務(wù)架構(gòu),你要去統(tǒng)計(jì)每個(gè)服務(wù)的metrics,比如請(qǐng)求的耗時(shí),請(qǐng)求的狀態(tài)碼,也可以通過這個(gè)中間件去實(shí)現(xiàn))

1. 全局中間件

全局中間件對(duì)所有的路由都生效。
如果先注冊(cè)了路由器,我再去use這個(gè)中間件,發(fā)現(xiàn)這個(gè)中間件沒有生效,這個(gè)是正常的,因?yàn)橹虚g件是在路由之后,那么注冊(cè)中間件就是失效的, 中間件一定要在路由之前注冊(cè)。

HandlerFunc這個(gè)其實(shí)也就是接受上下文對(duì)匿名函數(shù)。

type HandlerFunc func(*Context)

這里很像一個(gè)閉包的用法,我們只能在函數(shù)當(dāng)中定義,但是沒有辦法去改變其一些變量。它不想讓你去改變其一些配置,它只允許你寫部分對(duì)實(shí)現(xiàn)。

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
)
 
//全局中間件,對(duì)所有路由生效,必須在路由注冊(cè)之前去use
func MiddleWare() gin.HandlerFunc {
	return func(c *gin.Context) { //返回一個(gè)匿名函數(shù)
		fmt.Println("我是一個(gè)中間件")
	}
}
 
func main() {
	r := gin.Default()
	r.Use(MiddleWare())
 
	r.GET("/hello", func(c *gin.Context) {
		fmt.Println("執(zhí)行了get方法")
		c.String(http.StatusOK, "hello")
		c.JSON(http.StatusOK, gin.H{
			"msg":  "success",
			"data": "hello",
		})
	})
 
	r.Run(":8000")
}
[GIN-debug] Listening and serving HTTP on :8000
我是一個(gè)中間件
執(zhí)行了get方法
[GIN] 2023/04/03 - 10:58:24 | 200 |      44.667μs |       127.0.0.1 | GET      "/hello"

這里可以看到中間件是先執(zhí)行,中間件比路由的handler是先執(zhí)行的。

2.局部中間件

局部中間件就是對(duì)某個(gè)路由生效,這個(gè)就沒有順序了,因?yàn)樗歉?cè)路由一起走的。

import ( 
"fmt" 
"github.com/gin-gonic/gin" 
)
 
 
func MiddleWare() gin.HandlerFunc { 
    return func(c *gin.Context) {
    fmt.Println("這里可以做一些身份驗(yàn)證等") 
 } 
}
 
func main() { 
    r := gin.Default() 
    // 首頁(yè)無需驗(yàn)證 
    r.GET("/index", func(c *gin.Context) { 
    c.JSON(200, gin.H{"msg": "index 頁(yè)面"}) 
})
 
    // home頁(yè)需要用戶登錄才能查看 
    r.GET("/home", MiddleWare(), func(c *gin.Context) { 
        c.JSON(200, gin.H{"msg": "home 頁(yè)面"}) 
    })
    r.Run() }

可以看到在返回日志之前去執(zhí)行了這個(gè)中間件,這就是一個(gè)局部中間件對(duì)用法。(先去執(zhí)行中間件再去執(zhí)行handler,這個(gè)局部中間件只對(duì)上面的路由生效)

[GIN-debug] Listening and serving HTTP on :8000
[GIN] 2023/04/03 - 11:14:11 | 200 |      56.791μs |       127.0.0.1 | GET      "/index"
這里可以做一些身份驗(yàn)證
[GIN] 2023/04/03 - 11:14:17 | 200 |      31.291μs |       127.0.0.1 | GET      "/home"

某些中間件需要特殊處理的話,使用局部中間件就好了。

如果中間件有很多公用的方法,那么大部分情況就是全局的中間件,而不是局部的中間件。其實(shí)大部分使用場(chǎng)景都是使用全局中間件。

到此這篇關(guān)于Golang Gin局部和全局中間件使用詳解的文章就介紹到這了,更多相關(guān)Golang Gin局部和全局中間件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

關(guān)鍵詞:

Golang?Gin局部和全局中間件使用詳解

中間件是放在客戶端和服務(wù)端的中間,當(dāng)你的客戶端對(duì)某個(gè)接口發(fā)起一個(gè)請(qǐng)求,但是在到達(dá)接口2之前,這里是有[詳細(xì)]
2023-04-28

癇病會(huì)不會(huì)傳染_癲癇會(huì)傳染嗎_天天消息

1、癲癇是由多種原因引起的大腦神經(jīng)元高度同步異常放電引起的臨床綜合征。不是傳染病,就是癲癇不傳染。癲[詳細(xì)]
2023-04-28

女終結(jié)者型號(hào)有哪些_女終結(jié)者誰(shuí)演的 每日快看

1、卡美隆·菲利普斯(薩默·格蘿飾)約翰的高中同學(xué),但其實(shí)是一名終結(jié)者機(jī)器人,她的任務(wù)就是負(fù)責(zé)保護(hù)約[詳細(xì)]
2023-04-28

熱門看點(diǎn):外交部:敦促美韓在臺(tái)灣問題上謹(jǐn)言慎行

外交部發(fā)言人毛寧4月27日在例行記者會(huì)上表示,中方注意到美韓聯(lián)合聲明涉臺(tái)內(nèi)容和韓國(guó)領(lǐng)導(dǎo)人接受采訪時(shí)的表[詳細(xì)]
2023-04-28

市銷率是什么意思_市銷率是什么 高好還是低好

1、市銷率是證券市場(chǎng)中出現(xiàn)的一個(gè)新概念,又稱為收入乘數(shù),是指普通股每股市價(jià)與每股銷售收入的比率。2、市[詳細(xì)]
2023-04-27

時(shí)隔3年,強(qiáng)大勢(shì)力再度挑戰(zhàn)女子中巡! 她們都是誰(shuí)?

北京時(shí)間4月26日,女子中巡首場(chǎng)國(guó)際賽事——2023天津女子挑戰(zhàn)賽結(jié)束首輪爭(zhēng)奪。深圳職業(yè)球手韓雨岑以4鳥1柏[詳細(xì)]
2023-04-27

探索昆蟲郵票里的乾坤 世界昆蟲郵票博物館在南京溧水開館

今天(4月27日)上午,“蝶舞螢飛七彩田園——世界昆蟲郵票博物館螢火蟲季系列活動(dòng)啟動(dòng)儀式”在南京溧水舉[詳細(xì)]
2023-04-27

開榨油坊的利潤(rùn)和成本_榨油坊利潤(rùn)分析-熱點(diǎn)在線

1、這是一個(gè)比較新鮮的行業(yè),目前做的人還不是很多,現(xiàn)在人比較注重食用油安全這塊的。2、應(yīng)該市場(chǎng)還行,利[詳細(xì)]
2023-04-27

“櫻”為有你 二七更美麗|我在櫻桃溝等你|天天百事通

心心念念的五一小長(zhǎng)假終于要到了!4月29日-5月3日,長(zhǎng)達(dá)5天的假期,讓放飛自我的心愈加地強(qiáng)烈。你將如何安排[詳細(xì)]
2023-04-27

美債收益率反彈 金價(jià)仍處于高位震蕩走勢(shì)

周四(4月27日)亞洲時(shí)段,現(xiàn)貨黃金小幅上漲,目前交投于2003美元 盎司附近。美國(guó)第一共和銀行市值周三再次暴[詳細(xì)]
2023-04-27
版權(quán)所有: 華聲制冷網(wǎng) All Rights Reserved
京ICP備2021034106號(hào)-36
聯(lián)系郵箱:55 16 53 8 @qq.com