rest - Rest api 中的事件流是什么以及为什么我们需要它?

标签 rest http websocket server-sent-events event-stream

我第一次尝试开发rest api。并寻找使用资源变更流的环回引用,例如使用 GET 和 POST 方法的 /resources/change-stream

我访问过this post这表明了 REST API 和 Streaming API 之间的差异。

我认为,虽然环回是在 REST API 中提供的。它是什么以及它有什么作用。你能用你向我解释清楚的方式向我解释一下吗(对于一个六岁的 child )。因为,我是第一次自己开发 REST API。所以,如果可能的话,我想逐步了解,就像我应该在 postman 中拥有什么。我应该使用像 '/api/resources/change-stream?_format=event-stream 这样的 url 以及 application/json 内容类型还是只使用 /api/resources/change-stream 就可以了。

如果您能为我提供一些真实的示例,以便我可以在自己的应用程序中尝试开发它,那将是一个很好的例子。

PS:无论您选择哪种语言(Node.js、Python、Ruby、PHP)来提供示例答案,我都可以接受。

最佳答案

如果我不得不猜测,这听起来像是单向 long polling您可以向服务器留下一个长时间运行的开放请求,该服务器将在事件发生时满足该请求。如果请求超时,不用担心,发送另一个请求并保持打开状态。当某个事件满足请求时,立即触发另一个请求,以便您可以接收下一个事件。

由于 API 另一端的文档(可能)仍然是 JSON 文档,因此您应该保留该 mime。但是,您可以作为事件类型发回的内容不受限制;如果您想发回 XML 或 YAML,请执行此操作并设置该 mime。 “流”只是一种约定机制。

就您的应用程序而言,从 REST 的角度来看,您尝试获取的事件只需要一段时间即可提供给您,并且失败的可能性很高。但我不会从 REST 的角度来看待这个问题,REST 只是惯例,不要让它束缚你。

或者,长轮询可能应该被替换为 WebSocket 之类的东西。因为它提供了一个更简单的 API(在我看来)并且看起来不像长轮询那么hacky。

如果您想问“我如何告诉 RESTful 消费者我的 API 是‘流’API”,那就没有意义了。再次强调,就 REST 而言,https://example.com/api/events/ 端点指的是 JSON 类型文档,该文档变化很大,接收时间较长,并且“经常失败”(如果您生成的事件不经常触发)。

关于rest - Rest api 中的事件流是什么以及为什么我们需要它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56065534/

相关文章:

java - HTTP 状态 405 – @DELETE 方法不允许使用该方法

http - 没有协议(protocol)的链接是有效的 XHTML 吗?即 <a href ="//www.example.com/">

Javascript WebSocket 到 Firebase?

javascript - WebSocket 握手错误 : Unexpected response code: 500

c++ - 通过 websocket 发送 STOMP 帧

java SocketException : Connection reset

api - Jasper报告服务器: Reports not shown via REST

vba - MS Word VBA,试图用来自 http 调用的数据填充组合框

java - 'Single Read' REST API 的适当 HTTP 方法

java - REST Web 服务始终使用 CodenameOne 客户端返回 html