Rest API中的事件流是什么,为什么我们需要它?

时间:2019-05-09 18:28:40

标签: rest http event-stream

我正在尝试首次开发rest api。并希望通过GET和POST方法环回使用更改流的引用,这些引用用于诸如/resources/change-stream之类的资源。

我访问过this post,这表明rest api和流api之间的差异。

虽然我认为回送是在rest api中提供的。这是什么,它做什么。您能否以您向我清楚的方式(针对一个六岁的孩子)向我解释一下。因为,我是第一次自己开发REST API。因此,如果可能的话,我想逐步了解,就像我在邮递员中应该有的一样。我应该将'/api/resources/change-stream?_format=event-stream之类的URL与application/json内容类型一起使用,还是只使用/api/resources/change-stream都可以。

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

PS:对我来说,无论您选择提供一些示例答案的哪种语言(Node.js,Python,Ruby,PHP),对我来说都非常好。

1 个答案:

答案 0 :(得分:1)

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

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

就您的应用程序而言,从REST的角度来看,如果您试图将其提供给您,并且花了很大的机会,就花了一段时间。但是我不会从REST的角度来看这个问题,REST只是约定俗成的,不要让它束缚您。

或者,长轮询可能应替换为WebSocket之类的东西,因为它提供了更简单的API(在我看来),而且看起来不像长轮询那样笨拙。

如果您要问的是“我如何告诉RESTful使用者我的API是'流'API”,这是没有意义的。同样,就REST而言,https://example.com/api/events/端点是指一个JSON类型文档,该文档发生了很大变化,需要很长时间才能接收,并且经常“失败”(如果生成的事件不会触发很多)。