当前位置: 首页 > 面试题库 >

流API与Rest API?

赫连照
2023-03-14
问题内容

此处的典型示例是Twitter的API。我从概念上了解REST
API的工作原理,从本质上讲,它只是针对您的特定请求的服务器查询,然后您会在其中收到响应(JSON,XML等),很棒。

但是我不确定在后台如何使用流API。我了解如何食用。例如,使用Twitter收听回复。从响应中侦听数据,并在其中分批发送推文。在字符串缓冲区中建立块,然后等待换行指示Tweet的结束。但是他们正在做些什么呢?

假设我有很多数据,我想在本地设置一个流API,供网上其他人使用(就像Twitter一样)。这是怎么做的,什么技术?这是Node
JS可以处理的吗?我只是想全神贯注于他们正在做的事情,以使此功能正常运行。


问题答案:

Twitter的流API是本质上是一个长时间运行的请求,该请求一直处于打开状态,数据在可用时被推送到其中。

其后果是服务器将必须能够处理许多并发的开放HTTP连接(每个客户端一个)。许多现有的服务器无法很好地管理该问题,例如Java
servlet引擎为每个请求分配一个线程,这可能(a)变得非常昂贵,并且(b)快速达到正常的最大线程设置并阻止了后续连接。

正如您猜到的那样,Node.js模型比Servlet模型更适合流连接的想法。请求和响应都在Node.js中作为流公开,但不会占用整个线程或进程,这意味着只要数据保持打开状态就可以继续将其推入流中,而不会占用过多的资源(尽管这样做是主观的)。从理论上讲,您可能有许多并发的打开响应连接到单个进程,并且仅在必要时才写入每个响应。

如果您还没有看过的话,那么Node.js的HTTP文档可能会有用。

我还将看一看technoweenie的Twitter客户端,以了解Node.js (特别是stream()函数)的 API的用户端是什么样子。



 类似资料:
  • 我最近开始学习Kafka,最后就问了这些问题。 > 消费者和流的区别是什么?对我来说,如果任何工具/应用程序消费来自Kafka的消息,那么它就是Kafka世界中的消费者。 流与Kafka有何不同?为什么需要它,因为我们可以使用消费者API编写自己的消费者应用程序,并根据需要处理它们,或者将它们从消费者应用程序发送到Spark? 我做了谷歌对此,但没有得到任何好的答案。抱歉,如果这个问题太琐碎了。

  • aiohttp.web.Request.content和aiohttp.ClientResponse.content都使用流来接受数据,同时也是流形式的API属性。 class aiohttp.StreamReader    流内容读取器    除了已经存在的aiohttp.web.Request.content和aiohttp.ClientResponse.content用于读取原始内容的Str

  • 我正在处理一个请求验证功能,在那里我需要检查是否有某个字符串值存在于包含在对象中的属性中,该属性包含在地图条目的值中,该地图是对象的一部分,最后是我的请求正文包含一组这些对象。 为了让它更清晰,我将只使用重要的代码部分来重新创建我的情况。 假设我的在请求体中被接收,它具有以下属性: 现在,我们有了,它有一个类型为的特定包装器对象: 该包装类包含一个映射: 最后,包含需要检查的属性,如果它包含某个值

  • Streaming API将JSON内容作为离散事件进行读写。 JsonParser读取数据,而JsonGenerator写入数据。 它是三者中最强大的方法,具有最低的开销和最快的读/写操作。 对于XML,它是Analogus to Stax解析器。 在本文中,我们将展示使用Jackson流API来读写JSON数据。 Streaming API与令牌的概念一起使用,Json的每个细节都要谨慎处理。

  • Streams是在Java中引入的,以帮助开发人员从一系列对象中执行聚合操作。 使用Java 9,几乎没有更多方法可以使流更好。 takeWhile(Predicate Interface) 语法 (Syntax) default Stream<T> takeWhile(Predicate<? super T> predicate) takeWhile方法获取所有值,直到谓词返回false。 在

  • 在Java 9中,负责控制和管理操作系统进程的Process API得到了显着改进。 ProcessHandle类现在提供进程的本机进程ID,开始时间,累计CPU时间,参数,命令,用户,父进程和后代。 ProcessHandle类还提供了检查进程活跃性和破坏进程的方法。 它具有onExit方法,CompletableFuture类可以在进程退出时异步执行操作。 Tester.java import