go web开发之iris(四)中间件Middleware

中间件主要用来处理页面的登录校验、跨站请求伪造防御、日志记录、session设置,权限管理等。
例如:可以对所有请求来之前做header中的头部校验
请求处理完成之后,调用ctx.Next()进行下一个阶段的处理。

1.单个请求的中间件

func main() {
   app := iris.New()

   app.Get("/name/{name}",before,mainHandler,after)
   // before,mainHandler,after 感觉这个设计思路好像那个koa2
   // 前一个通过ctx.Next() 进入下一个方法

   app.Run(iris.Addr(":8085"),iris.WithCharset("UTF-8"))
}

func before(ctx iris.Context)  {
   name := ctx.Params().Get("name")
   if strings.EqualFold(name,"dollarkiller") {
      fmt.Println("before...............")
      ctx.Next()
      return
   }
   ctx.WriteString("error none")
}

func after(ctx iris.Context) {
   fmt.Println("after.....................")
}

func mainHandler(ctx iris.Context) {
   fmt.Println("main.................")
   ctx.WriteString("ok........")
   ctx.Next()
}

2.全局中间件

func main() {
   app := iris.New()

   // 注册前置全局中间件
   app.Use(before)
   // 主持后置
   app.Done(after)

   app.Get("/", func(ctx iris.Context) {
      ctx.HTML("

Hello

") ctx.Next() }) app.Run(iris.Addr(":8085"),iris.WithCharset("UTF-8")) } func before(ctx iris.Context) { header := ctx.GetHeader("token") fmt.Println("全局前置..........",header) ctx.Next() } func after(ctx iris.Context) { fmt.Println("后置............") }

你可能感兴趣的:(go web开发之iris(四)中间件Middleware)