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