如何编写可以在结果到达客户端时传输结果的中间层http API端点?

时间:2012-04-04 12:19:45

标签: api http node.js

场景是这样的 - 我有一个前端的web服务器,我在node.js写。我有一个尚未写入的中间层内部API层,其中包含任何内容。内部API是唯一允许与数据存储(恰好是关系数据库)通信的东西。

免责声明:我是node.js初学者。

node.js想要异步进行数据访问 - 这使得像Database.query.all这样的调用效率低下,因为响应回调在组装完整个列表之前不会启动。我读过的文档表明,最好一次一个地向客户端传输结果。

我想知道如何编写前端和中间层http内部API,这样我就可以利用node.js的异步性了。

我想问题是“如何通过http传输结构化数据”?我想这就是我要求支持的内部API的功能。

我应该:

  • 获取前端要求提供ID列表,然后向后端发出一个请求?听起来很粗暴,很健谈,而且我没有看到保证请求会按照我想要的顺序返回,所以我必须等待,直到我把所有东西都放回到前端......?
  • 让前端针对数据页面针对内部API发出一系列请求,并将每个块视为一个流段......?
  • 只为第一个屏幕的值获取足够的数据,然后请求后续的块,在列表到达时将每个块写入列表的末尾?
  • 更聪明的东西!

(注意:请不要说“摆脱中间层,以便你可以直接与数据库交谈” - 这不是一个选项)

1 个答案:

答案 0 :(得分:0)

我不确定“流媒体”究竟是什么意思;根据您提供的想法,可以将其解释为某些HTTP server push or long polling technique,或者只是制作后续的XHR请求。

由于您使用的是节点,我建议使用Socket.io,这样您就可以随时将数据推送到浏览器

如果您选择使用XHR,只需告诉浏览器接下来要请求的内容。

如果这不适合您,并且您想要使用服务器推送或长轮询,response.write()似乎还有很长的路要走。但是你可能会遇到请求超时等问题。