【发布时间】:2017-02-20 13:37:07
【问题描述】:
我有REST后端api,前端会调用api获取数据。
我想知道 REST api 如何处理持续的数据更新,例如, 在 jenkins 中,我们会看到如果我们执行构建作业,我们可以在页面上看到连续的日志输出,直到作业完成。 REST 如何做到这一点?
【问题讨论】:
标签: apache rest http web django-rest-framework
我有REST后端api,前端会调用api获取数据。
我想知道 REST api 如何处理持续的数据更新,例如, 在 jenkins 中,我们会看到如果我们执行构建作业,我们可以在页面上看到连续的日志输出,直到作业完成。 REST 如何做到这一点?
【问题讨论】:
标签: apache rest http web django-rest-framework
Jenkins 将继续发送数据。而已。它只是继续发送(至少我认为它是这样做的)。通常响应包含一个标头字段,指示响应包含多少数据 (Content-Length)。但是这个字段不是必需的。服务器可以省略它。在这种情况下,响应正文会在服务器关闭连接时结束。见RFC 7230:
否则,这是一个没有声明消息体长度的响应消息,因此消息体长度取决于在服务器关闭连接之前接收到的八位字节数。
另一种可能性是使用chunked transfer encoding。然后服务器发送一个具有自己的Content-Length 标头的数据块。服务器通过发送一个长度为零的最后一个块来终止此操作。
Websocksts 是第三种可能性。
【讨论】: