0
關於golang馬提尼馬提尼處理程序的調用順序是什麼?
- 我們可以添加使用m.Use中間件()。當然,「中間件處理程序按照它們添加的順序被調用」。
- 此外,處理程序也可以通過路由器添加,如r.Get(「/」,handler)。
- 有時,我們還需要在路由器處理程序之後調用一個處理程序。這是一個處理程序在寫入ResponseWriter之前調用。
那麼,這些處理程序的演示順序如何?我無法得到解決方案是馬丁尼的文件。
關於golang馬提尼馬提尼處理程序的調用順序是什麼?
那麼,這些處理程序的演示順序如何?我無法得到解決方案是馬丁尼的文件。
正如你所說的,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()
之前或之後的中間件中添加代碼。
路由器處理程序應該寫入ResponseWriter。因此,在路由寫入之前需要一箇中間件來訪問ResponseWriter。我會建議negroni(https://github.com/codegangsta/negroni)來處理更多的慣用中間件。 – SnoProblem
馬提尼現在被遺棄。試試杜松子酒 –