我的代码如下所示:
let myAPI = Service(baseURL: "...")
myAPI.resource("/...").addObserver(owner: self) { resource, event in
}
如果 URL 总是返回 200(不是 301),有没有办法检查数据本身、json 内容是否已更改resource
或event
是否相同?
我想实现应用程序在后台加载并且仅在 JSON 本身发生更改时才触发 UI 操作的行为。
我的代码如下所示:
let myAPI = Service(baseURL: "...")
myAPI.resource("/...").addObserver(owner: self) { resource, event in
}
如果 URL 总是返回 200(不是 301),有没有办法检查数据本身、json 内容是否已更改resource
或event
是否相同?
我想实现应用程序在后台加载并且仅在 JSON 本身发生更改时才触发 UI 操作的行为。
Siesta 目前不支持此功能。在一般情况下,它不能自动这样做,因为对于每种类型的资源内容,没有普遍有效的“已更改”定义。(即使资源内容是Equatable
,并且恰好与您想要的“更改”的定义相匹配,是否应该在相等的概念中包含一些标头?哪些标头?)
304 是一条很好的明线:服务器,资源的真实仲裁者,声明它在语义上没有改变——以及所有关于“未改变”意味着什么的 API 特定规则都存在于服务器上。
然而,这似乎是一件好事,能够定制。如果您希望看到它被实施,我建议您提交一个问题。
同时,您可以手动完成:使您的资源有效负载符合Equatable
并在您的资源观察器中检查它。如果您有对性能敏感的更新,那么这种形状的方法有时会更有意义,因为您可以检查部分更改(例如,只有集合中的一些元素发生了更改)。