1.通过use()来使用多个中间件

router := gin.New()
router.Use( middleware1, middleware2)

2.中间件的典型实现

func Logger() gin.HandlerFunc {
return func(context *gin.Context) {
start := time.Now()
log.Println(start, context.Request.Method, context.Request.RequestURI, context.ClientIP())
//上面的代码是 before_request
context.Next() //执行请求
//后面的代码是after request
latency := time.Now().Sub(start)
log.Println(latency.Milliseconds(), context.Writer.Status())
}
}

一直在找BeforeRequest() / AfterRequest() 这样的方法,原来很简单,写在 context.Next() 前后就行了!

最新文章

  1. 4-3 管理及IO重定向
  2. 【Alpha】Daily Scrum Meeting第十次
  3. tftp服务器的搭建
  4. css给div添加0.5px的边框
  5. win环境安装python爬虫框架scrapy
  6. [No000000]常用软件测试编译环境声明
  7. 谈谈数据监听observable的实现
  8. css3 -- 颜色与不透明度
  9. Spring整合CXF之发布WebService服务
  10. Install the 64bit library in Ubuntu13.10
  11. Java---JUnita、注解与类加载器详解以及实例
  12. JS实现下拉框选中不同的项,对应显示不同的信息
  13. QT皮肤框架-TQUI
  14. python多线程抓取网页信息
  15. Azure File文件共享(6):使用Python开发
  16. c 围圈报数
  17. tarjan+缩点
  18. Android使用OpenGL ES2.0显示YUV,您的手机上的数据要解决两个方面的坐标
  19. [iOS]C语言知识点系列视频
  20. 数据库中File权限的危害

热门文章

  1. CF721B Passwords 题解
  2. java 输入输出IO流 IO异常处理try(IO流定义){IO流使用}catch(异常){处理异常}finally{死了都要干}
  3. libevent实现多线程
  4. vim操作(复制,粘贴)
  5. MySQL查看数据库连接数
  6. Linux(centos7)安装redis并设置redis开机自启动
  7. 【LeetCode】1004. Max Consecutive Ones III 解题报告(C++)
  8. 【LeetCode】801. Minimum Swaps To Make Sequences Increasing 解题报告(Python)
  9. World is Exploding(hdu5792)
  10. 1084 - Winter