Siesta-Swift: есть ли способ узнать, изменился ли Resource.latestData?
Мой код выглядит следующим образом:
let myAPI = Service(baseURL: "...")
myAPI.resource("/...").addObserver(owner: self) { resource, event in
}
если URL всегда возвращает 200 (НЕ 301), есть ли способ проверить resource
или же event
если сами данные, json-контент, изменились или они одинаковые?
Я хотел бы добиться поведения, при котором приложение выполняет загрузку в фоновом режиме и запускает UI-действие, только если сам JSON изменился.
1 ответ
Сиеста в настоящее время не поддерживает это. В общем случае это не может быть сделано автоматически, поскольку не существует универсально действительного определения "изменено" для каждого типа содержимого ресурса. (Даже если содержание ресурса Equatable
и это, как оказалось, соответствует определению "изменено", которое вы хотите, должны ли некоторые заголовки быть включены в понятие равенства? Какие?)
304 - приятная яркая линия: сервер, арбитр правды для ресурса, объявляет его семантически неизменным - и все специфичные для API правила о том, что означает "неизменный", живут на сервере.
Это, однако, кажется хорошей вещью, чтобы иметь возможность настраивать. Я рекомендую заполнить вопрос, если вы хотите, чтобы он был реализован.
А пока вы можете сделать это вручную: сделать так, чтобы полезная нагрузка вашего ресурса соответствовала Equatable
и проверьте это в своем ресурсе наблюдателей. Если у вас есть обновления, чувствительные к производительности, подход с такой формой в любом случае иногда имеет больше смысла, так как вы можете проверить частичные изменения (например, изменились только некоторые элементы в коллекции).