什么是静态事件流 api,我们为什么需要它?

What is event stream in rest api and why do we need it?

我第一次尝试休息 api。并寻找使用 GET 和 POST 方法对 /resources/change-stream 等资源使用更改流的环回引用。

我访问了 this post,它表明了休息 api 和流 api 之间的差异。

虽然环回在休息时提供它 api,但我认为。它是什么以及它做什么。你能用一种你让我明白的方式向我解释一下吗(对于一个六岁的孩子child)。因为,我是第一次自己开发 REST API。所以,如果可能的话,我想逐步了解邮递员应该有什么。我应该使用像 '/api/resources/change-stream?_format=event-stream 这样的 url 和 application/json content-type 还是只使用 /api/resources/change-stream 就可以了。

如果你能给我一些真实的例子,这样我就可以在我自己的应用程序中尝试开发它,那将是一个很好的例子。

PS:无论您选择哪种语言(Node.js、Python、Ruby、PHP),我都可以提供答案有一些例子。

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

由于 API 另一端的文档仍然(可能)是 JSON 文档,您应该保留那个 mime。但是,您不限于可以作为事件类型发回的内容;如果您想发回 XML 或 YAML,请这样做并设置该 mime。 "stream"只是一种约定机制。

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

或者,long-polling 可能应该被 WebSocket 之类的东西代替,因为它提供了更简单的 API(在我看来)并且看起来不像 long-polling.

如果你想问,"how do I tell a RESTful consumer that my API is a 'stream' API",没有意义。同样,就 REST 而言,https://example.com/api/events/ 端点指的是一个 JSON 类型的文档,该文档更改很多,需要很长时间才能接收,并且 "fails" 经常(如果事件你生成不要开火太多)。