如何使用net / http处理每个请求的上下文

时间:2015-08-10 23:26:57

标签: go

this answer的前半部分演示了一种模式,用于在两个处理程序方法之间共享一些每请求上下文。排序。

我正在寻找一种方法基本上这样做,但有两个以上的处理程序。

想象一下,我需要使用相同的每个请求上下文调用三个(或更多)http.HandlerFunc

  • 验证()
  • DoStuff()
  • OutputHTML()

不使用全局映射(例如gorilla / mux),使用标准http.Handler接口有没有办法在这些函数之间传递每个请求的上下文?

1 个答案:

答案 0 :(得分:1)

您可以使用您的上下文欺骗并包装Request.Body(ReaderCloser界面)。

以下是一个示例:webctx.go

当你想要你的上下文时,只需输入assert request.Body就是你的类型。 唯一的技巧是你的类型必须保持原始的主体并实现ReaderCloser方法......但这是最少量的代码。