rest - 使用 Gorilla Mux 端点通过 HTTP 流式传输数据

标签 rest go endpoint flush mux

在我的 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/

相关文章:

java - 如何让用java编写的服务只能处理来自定义的ip的请求?

rest - Jersey 的 RestFul API 的 2 足 OAuth 安全性

javascript - Backbone.js 'Model' 在调用 Save() 后期望从服务器返回什么?

python - 谷歌云 Composer 获取 Airflow webserver_id

codeigniter - 与 codeigniter 和backbone.js 的数据库交互

go - 如何使用神经网络建立一个基本的围棋项目?

html - 设置 gcloud appspot 域 - 找不到 URL 错误

go - 短变量声明和 "variable declared and not used"错误

java - 具有原生 @WebService 支持的可嵌入 Web 服务器,作为 Endpoint.publish 的替代方案

java - 无法使工作的 ContainerRequestFilter