0

我的代码如下所示:

let myAPI = Service(baseURL: "...")
myAPI.resource("/...").addObserver(owner: self) { resource, event in
}

如果 URL 总是返回 200(不是 301),有没有办法检查数据本身、json 内容是否已更改resourceevent是否相同?

我想实现应用程序在后台加载并且仅在 JSON 本身发生更改时才触发 UI 操作的行为。

4

1 回答 1

0

Siesta 目前不支持此功能。在一般情况下,它不能自动这样做,因为对于每种类型的资源内容,没有普遍有效的“已更改”定义。(即使资源内容是Equatable,并且恰好与您想要的“更改”的定义相匹配,是否应该在相等的概念中包含一些标头?哪些标头?)

304 是一条很好的明线:服务器,资源的真实仲裁者,声明它在语义上没有改变——以及所有关于“未改变”意味着什么的 API 特定规则都存在于服务器上。

然而,这似乎是一件好事,能够定制。如果您希望看到它被实施,我建议您提交一个问题。

同时,您可以手动完成:使您的资源有效负载符合Equatable并在您的资源观察器中检查它。如果您有对性能敏感的更新,那么这种形状的方法有时会更有意义,因为您可以检查部分更改(例如,只有集合中的一些元素发生了更改)。

于 2018-06-07T04:15:06.550 回答