关于golang http 中间件的记录

本文探讨了Golang中HTTP中间件的实现,特别是引入context概念后,如何处理中间件的数据传递。文章以net/http、chi、iris等框架为例,讲解了中间件的写法和差异,重点分析了context在中间件值传递中的作用,包括如何获取和设置context,以及如何处理panic。此外,还讨论了在回路逻辑中传递和共享变量的注意事项,包括浅复制和context的包含关系。
摘要由CSDN通过智能技术生成

关于golanghttp中间件与java, python等有区别, 特别是自go 引入了context概念之后,在实际开发中也遇到过不少问题, 以下作记录:
在这里插入图片描述

  • 不同的开发框架如net/http, chi, iris, 其中间件写法大同小异, 均返回http.Handler,(因此在go web开发过程中,框架切换比较轻松),类似:
func exampleMiddleware(message string) http.Handler {
  return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  . ..
    w.Write([]byte(message)
  })
}

可见其跟处理业务的handler区别不大。

  • chi中提供了不少中间件的example事例, 包括限流、限iploggertimeout等, 其实现逻辑非常简洁, 日常开发中大部分中间件的开发参考此实现源码便足够。

  • example事例中的中间件数据传递方向均为 from middleware to middleware/handler, 这里不作举例。

  • 中间件值传递之 from middleware to middleware/handlergolang 引入了context特性(context的使用规范详见此), 对每个http.Request 均带

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值