httpsnoop 包提供了一种简单的方法,可以从应用程序的 http.Ha 中捕获与 http 相关的指标(即响应时间、写入字节数和 http 状态码)。
httpsnoop 包提供了一种简单的方法,可以从应用程序的 http.Ha 中捕获与 http 相关的指标(即响应时间、写入字节数和 http 状态码)。
但是,如果你在 Google 上搜索"捕获 ResponseWriter 状态码",你会发现许多建议和代码示例,它们表明这是一项相对简单的工作。不幸的是,到目前为止我所看到的一切都有很大的可能会导致你的应用程序崩溃。
主要问题是, http.ResponseWriter 通常实现了其他接口,例如 http.Flusher,http.CloseNotifier,http.Hijacker,http.Pusher 和 io.ReaderFrom。因此,仅将 http.ResponseWriter 包装到自己实现了 http.ResponseWriter 接口的结构中,会隐藏上述其他接口。这很可能会为任何非简单的应用程序引入微妙的错误。
我曾看到的另一种方法是返回实现了上述所有接口的结构体。然而,这种方法也存在问题,因为在底层 http.ResponseWriter 没有实现时,很难模拟这些接口的行为。此外,这种方法也很危险,因为应用程序可能会选择以不同的方式运行,仅仅因为它检测到这些额外接口的存在。本包通过检查 http.ResponseWriter 实现了哪些额外接口来解决这个问题,返回实现了完全相同接口集的封装版本。
暂无开放 Issues,或尚未同步最近议题。