创建中间件

中间件是一个接收 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. )