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("<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("后置............")
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.简书 koa是由Express原班人马打造,致力于成为一个更小、更富有表现力、更健壮的Web框架。使用koa编...
    不去解释阅读 2,767评论 0 11
  • 本节将结合例子和源码对koa2的中间件机制做一介绍。 什么是中间件? 中间件的本质就是一种在特定场景下使用的函数,...
    空无一码阅读 1,521评论 0 2
  • Koa 必须使用 7.6 以上的版本。如果你的版本低于这个要求,就要先升级 Node。 基本用法 Koa 提供一个...
    Gukson666阅读 2,543评论 0 1
  • Address:https://www.zybuluo.com/XiangZhou/note/208532 Exp...
    天蠍蒗漫阅读 11,573评论 2 55
  • 高二那年,周天的某个下午,我们刚刚分了文理,我一个人抱着一摞书悄悄地走进了新班级,把书桌整理好后,假装拿出一本书来...
    北城初暖阅读 412评论 0 2

友情链接更多精彩内容