Go Iris 中间件
生活随笔
收集整理的這篇文章主要介紹了
Go Iris 中间件
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Iris 中間件
當(dāng)我們?cè)?iris 中討論中間件時(shí),我們討論的是在HTTP請(qǐng)求生命周期中在主處理程序代碼之前和/或之后的運(yùn)行代碼。
實(shí)現(xiàn)中間件功能,有下面這樣兩種方式:
方式一:
我們可以通過按順序注冊(cè)多個(gè) handler 的方式來(lái)實(shí)現(xiàn)中間件的效果:
package mainimport "github.com/kataras/iris"func main() {app := iris.New()app.Get("/", before, mainHandler, after)login := app.Party("/login", loginHandler)login.Get("/{name}", loginNameHandler)app.Run(iris.Addr(":9090")) }func loginNameHandler(ctx iris.Context){name := ctx.Params().Get("name")println(name)ctx.Next() }func loginHandler(ctx iris.Context){println("login")ctx.Next() }func before(ctx iris.Context){println("before")ctx.Next() //繼續(xù)執(zhí)行下一個(gè)handler,這本例中是mainHandler }func mainHandler(ctx iris.Context){println("mainHandler")ctx.Next() }func after(ctx iris.Context){println("after")ctx.Next() }訪問 localhost:9090/輸出結(jié)果:
before mainHandler after訪問 localhost:9090/login/zhangsan 輸出結(jié)果:
login zhangsan方式二(全局中間件):
我們會(huì)注意到,訪問 login 路徑時(shí)的中間件代碼并沒有被執(zhí)行。如果希望在全局范圍內(nèi)使用中間件,而不僅僅是針對(duì)某一個(gè)路徑時(shí),可以通過使用 Use 和 Done 方法來(lái)為當(dāng)前域名下的所有路由進(jìn)行注冊(cè)
func main() {app := iris.New()//注意 Use 和 Done 方法需要寫在綁定訪問路徑的方法之前//使用 ‘Use’ 方法作為當(dāng)前域名下所有路由的第一個(gè)處理函數(shù)//而使用 ‘UseGlobal’ 方法注冊(cè)的中間件,會(huì)在包括所有子域名在內(nèi)的所有路由中執(zhí)行app.Use(UseBefore)app.Done(DoneAfter)app.Get("/", before, mainHandler, after)login := app.Party("/login", loginHandler)login.Get("/{name}", loginNameHandler)app.Run(iris.Addr(":9090")) }func UseBefore(ctx iris.Context){println("use - before")ctx.Next() }func DoneAfter(ctx iris.Context) {println("Done - after")ctx.Next() }訪問 localhost:9090/ 輸出結(jié)果:
use - before before mainHandler after Done - after訪問 localhost:9090/login/zhangsan 輸出結(jié)果:
use - before login zhangsan Done - after可以看到通過 Use 和 Done 方法注冊(cè)的中間件都被執(zhí)行了。
轉(zhuǎn)載于:https://www.cnblogs.com/liyutian/p/10270935.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Go Iris 中间件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 436.寻找右区间
- 下一篇: 知识图谱基础知识之四——知识图谱的典型应