創建中間件

中間件是一個接收 Handle 並返回 Handle 的函數。讓我們以 ServerHeader 作爲例子,其寫入 Server 響應頭,並調用下一個中間件或處理器。

  1. func ServerHeader(srv string) clevergo.MiddlewareFunc {
  2. return func(next clevergo.Handle) clevergo.Handle {
  3. return func(ctx *clevergo.Context) error {
  4. // 寫入 Server 響應頭。
  5. ctx.Response.Header().Set("Server", srv)
  6. // 調用下一個中間件或處理器。
  7. return next(ctx)
  8. }
  9. }
  10. }

全局中間件

  1. router.Use(
  2. clevergo.Recovery(true), // Recovery 中間件
  3. ServerHeader("CleverGo"),
  4. )

路由組中間件

請參閱路由組

路由中間件

請參閱路由中間件

第三方中間件

WrapHH 是一個將 func(http.Handler) http.Handler 轉化爲中間件的適配器,你可以輕鬆地使用絕大部分的第三方中間件。

  1. router.Use(
  2. // https://github.com/nytimes/gziphandler
  3. clevergo.WrapHH(gziphandler.GzipHandler),
  4. )