美文网首页
go web开发之iris(四)中间件Middleware

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

作者: 东京的雨不会淋湿首尔 | 来源:发表于2019-07-17 19:18 被阅读0次

    中间件主要用来处理页面的登录校验、跨站请求伪造防御、日志记录、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("<h1>Hello</h1>")
          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

          本文链接:https://www.haomeiwen.com/subject/sxiclctx.html