亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

goalng框架Gin中間件的c.Next()有什么作用?怎么回事哈?。?/h1>

goalng框架Gin中間件的c.Next()有什么作用?怎么回事哈啊?

呼喚遠方 2019-09-25 15:34:59
感覺用不用效果一樣的啊,看文檔說是執行掛起程序,具體怎么好理解一些呢,每個中間件一定要用嗎?
查看完整描述

2 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

中間件可以理解為洋蔥穿透。
c.Next()之前的操作是在Handler執行之前就執行;c.Next()之后的操作是在Handler執行之后再執行;
funcMiddleware(c*gin.Context){
fmt.Println("HelloBefore;")
c.Next()
fmt.Println("HelloAfter;")
}
然后你在Handler中輸出一些內容就能發現。HelloBefore在你的Handler之前就輸出。HelloAfter在之后輸出。
之前的操作一般用來做驗證處理,訪問是否允許之類的。之后的操作一般是用來做總結處理,比如格式化輸出、響應結束時間,響應時長計算之類的。
                            
查看完整回答
反對 回復 2019-09-25
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

中間件用的,不要管啥掛不掛起的,我估計是翻譯的鍋。假如你用兩個中間件
//打印請求處理事件
funcMiddleware1(ctx*gin.Context){
start:=time.Now()//記錄開始時間
ctx.Next()//調用處理過程(會產生調用耗時)
t:=time.Since(start)//調用處理過程完畢后計算時間差
fmt.Println(t)//打印本次請求處理時間差
}
funcMiddleware2(ctx*gin.Context){
if(!service.CheckLogin(ctx)){//登錄檢測,未登錄
return//直接return,該請求的處理結束
}
ctx.Next()//登錄檢測通過,繼續后續處理
}
                            
查看完整回答
反對 回復 2019-09-25
  • 2 回答
  • 0 關注
  • 707 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號