第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

請各位大佬指點!goalng框架Gin中間件的c.Next()有什么作用?十分感謝

請各位大佬指點!goalng框架Gin中間件的c.Next()有什么作用?十分感謝

三國紛爭 2019-10-10 18:41:17
感覺用不用效果一樣的啊,看文檔說是執(zhí)行掛起程序,具體怎么好理解一些呢,每個中間件一定要用嗎?
查看完整描述

2 回答

?
慕田峪4524236

TA貢獻1875條經(jīng)驗 獲得超5個贊

中間件可以理解為洋蔥穿透。
c.Next()之前的操作是在Handler執(zhí)行之前就執(zhí)行;c.Next()之后的操作是在Handler執(zhí)行之后再執(zhí)行;
funcMiddleware(c*gin.Context){
fmt.Println("HelloBefore;")
c.Next()
fmt.Println("HelloAfter;")
}
然后你在Handler中輸出一些內(nèi)容就能發(fā)現(xiàn)。HelloBefore在你的Handler之前就輸出。HelloAfter在之后輸出。
之前的操作一般用來做驗證處理,訪問是否允許之類的。之后的操作一般是用來做總結(jié)處理,比如格式化輸出、響應(yīng)結(jié)束時間,響應(yīng)時長計算之類的。
                            
查看完整回答
反對 回復 2019-10-10
?
慕哥6287543

TA貢獻1831條經(jīng)驗 獲得超10個贊

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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號