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 и проверьте это в своем ресурсе наблюдателей. Если у вас есть обновления, чувствительные к производительности, подход с такой формой в любом случае иногда имеет больше смысла, так как вы можете проверить частичные изменения (например, изменились только некоторые элементы в коллекции).

Другие вопросы по тегам