關于 golang 馬提尼我們可以使用 m.Use() 添加中間件。當然,“中間件處理程序按添加順序調用”。此外,也可以通過路由器添加處理程序,如 r.Get("/", handler)。有時,我們還需要在路由器處理程序之后調用一個處理程序。那是在將某些內容寫入 ResponseWriter 之前調用處理程序。那么,如何排列這些處理程序的呈現順序?我無法得到解決方案是 martini 的文檔。
1 回答

慕桂英546537
TA貢獻1848條經驗 獲得超10個贊
正如您所說,Martini 中的中間件和其他中間件是按照定義的順序調用的:首先是使用添加的中間件,然后是路由中間件,然后是路由處理程序。
這是馬提尼文檔給出的中間件示例:
// log before and after a request
m.Use(func(c martini.Context, log *log.Logger){
log.Println("before a request")
c.Next()
log.Println("after a request")
})
據此,如果您有中間件 A 和 B 以及路由 R,那么調用鏈將是這樣的:
func A() {
// Do things before B
func B() {
// Do things before R
func R() {
// Do things in R
} ()
// Do things after R
}()
// Do things after B
}
因此,根據您的需要,您需要在Next() 調用之前或之后在中間件中添加代碼。
- 1 回答
- 0 關注
- 160 瀏覽
添加回答
舉報
0/150
提交
取消