在我的 REST 端点上收到请求后,我想回复状态 200
和持续生成和刷新的数据主体(从数据库中获取并且可能非常大)。我正在寻找一种有效的方法来使用 Gorilla Mux ,因为整个项目都在使用它。
我看到 Labstack Echo 是可能的,因为它是 ResponseWriter
supports http.Flusher
(interface 允许 HTTP 处理程序将缓冲数据刷新到客户端)。不幸的是, gorilla 的 ResponseWriter
似乎不支持这一点。
问题:
- 有没有办法让 Gorilla Mux 具有这种行为?
- 如果没有,我会很感激指向“最精简”方法的指针以实现此行为(我已经找到了 Labstack Echo,但也许有更好的方法?)
不变量:
- 我不能使用
WebSockets
,应该将解决方案与 REST API 集成。 - 我将无法将整个文件保存在服务器内存中。
最佳答案
您可以在 gorilla/mux 中使用 Flush,因为它使用标准库中的 http.ResponseWriter
实现。您可以通过在您的处理程序中使用以下代码来使用 Flush
方法
func YourHandler(w http.ResponseWriter, r *http.Request) {
//SomeCode
w.(http.Flusher).Flush()
}
关于rest - 使用 Gorilla Mux 端点通过 HTTP 流式传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48691735/