用于获取读取模型列表的Wolkenkit REST API确实返回心跳条目

时间:2017-08-31 08:08:06

标签: rest wolkenkit

我听说wolkenkit还提供了REST API,但没有找到任何相关文档。我对这些消息来源进行了筛选,并找到了一些关于如何做到的迹象。

我正在使用HTTPie来处理来自cli的请求:

$ http post https://local.wolkenkit.io:3500/v1/read/lists/labels

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate
Connection: keep-alive
Date: Wed, 30 Aug 2017 21:08:07 GMT
Expires: 0
Pragma: no-cache
Surrogate-Control: no-store
X-FRAME-OPTIONS: DENY
X-Powered-By: Express
X-XSS-Protection: 1; mode=block
content-type: application/json
transfer-encoding: chunked

{"name":"heartbeat"}
{"label":"first","id":"baa1b2b6-ab85-4929-a488-0cae622de20a","isAuthorized":{"owner":"anonymous","forAuthenticated":false,"forPublic":true}}
{"label":"second","id":"7fc6c3c9-3285-4292-b3db-6d88ca90a347","isAuthorized":{"owner":"anonymous","forAuthenticated":false,"forPublic":true}}

我的label readModel中有两个条目,但似乎有第三个条目{"name":"heartbeat"}。它来自哪里,它意味着什么?

这是一个错误还是我可能意外创建了该条目?

1 个答案:

答案 0 :(得分:2)

免责声明:我是wolkenkit的开发人员之一。

这实际上既不是错误,也不是意外创建条目; - )

我们通过HTTP流式传输JSON,我们体验到,当两个数据包之间存在长时间暂停时,某些代理服务器(以及类似的东西)会引发问题。

在过去,我们改变了读取模型的传递方式,并且我认为这仍然不是必需的,所以这是过去的延续。 (如果我们谈论的是事件路线,那么故事会有所不同,这里肯定还需要。)

在我们使用的库json-lines-client中,我们过滤掉了心跳事件:

const isNotHeartbeat = function (data) {
  const keys = Object.keys(data);

  return !(
    (keys.length === 1) &&
    (keys[0] === 'name') &&
    (data.name === 'heartbeat')
  );
};

(取自source code of json-lines-client 0.7.9

目前,我建议为您的代码引入类似的逻辑,这样您就可以忽略这些事件(随着时间的推移,可能会有多个事件,并且它们不需要是第一个事件)。 / p>