我有一个 API 端点,它以无穷无尽的 JSON 对象序列进行响应。喜欢
GET /commands?since=112233
{"cmd": "mycommand", "params": [...]}
{"cmd": "othercommand", "params": [...]}
...
会话几乎永远不会结束(服务器有一个设置最终会超时,但典型值是几十万秒)。
有没有办法在 Siesta 中使用这样的 API?
我有一个 API 端点,它以无穷无尽的 JSON 对象序列进行响应。喜欢
GET /commands?since=112233
{"cmd": "mycommand", "params": [...]}
{"cmd": "othercommand", "params": [...]}
...
会话几乎永远不会结束(服务器有一个设置最终会超时,但典型值是几十万秒)。
有没有办法在 Siesta 中使用这样的 API?
不,Siesta 不直接支持这一点。Siesta 的一个基本假设是 URL 是具有(有限)状态的资源,并且您希望观察该状态随时间的变化。因此,Siesta 期望在实际开始解析它并发布结果之前得到完全具体化的响应。您所描述的是 HTTP 的不同用途,它不适合 Siesta 的模型。
现在,如果您获得的 JSON 对象序列可以合理地解释为表示资源随时间变化的连续状态序列,那么就可以在 Siesta 之外进行自己的网络调用,然后用于Resource.overrideLocalData(…)
发布他们到达时的更新。
但是,查看您提供的示例数据,这看起来更像是一系列动作或事件,而不是一系列状态。Siesta 以资源为中心的世界观可能不适合这种情况。如果问“事物 X 的当前状态是什么?”,午睡会给你带来最大的好处。对您的 API 来说是有意义且自然的。