Как синхронизировать все?
В REST вы этого не делаете.Каждый клиент (потенциально) имеет свой собственный локальный кеш.Сервер включает стандартизированные метаданные кэширования в своих ответах, чтобы предоставить клиентам подсказку о том, как часто информация может изменяться.
Аннулирование кэша стандартизировано, но толькокеши, через которые проходит HTTP-запрос, будут видеть инициирующие запросы.Поэтому, если ваши клиенты не используют общий кеш (маловероятно, что в мире HTTPS), у кого-то будут устаревшие данные.
Конечно, на сервере все еще есть официальная копия, и мы стандартизировали условные запросы , которые дают нам варианты, когда данные клиентов слишком устарели.
Как отразить эти изменения на стороне клиента после того, как серверная часть успешно обработала этот запрос?
Существует раздел спецификации HTTP, который описывает, как идентифицировать представление в сообщении HTTP.Он включает в себя этот отрывок
Если ответ имеет поле заголовка Content-Location и его значение поля является ссылкой на тот же URI, что и эффективный URI запроса, полезная нагрузка является представлением идентифицированного ресурсапо действующему URI запроса.
Итак, POST /foo
PUT /foo
PATCH /foo
имеют стандартизированный способ объявления о том, что представление, заключенное в ответ, является новым представлением /foo
Насколько я вижу, не существует какого-либо стандартизированного способа передачи побочных эффектов;то есть изменения в других ресурсах.Мы должны вернуться к семантике аннулирования кэша.
По большей части REST - это группа компьютеров, которые притворяются веб-браузерами и общаются с машиной, которая притворяется веб-сервером.
Интерфейс REST спроектирован так, чтобы быть эффективным для передачи крупномасштабных гипермедиа-данных, оптимизируя его для общего случая Интернета, но в результате получая интерфейс, который не является оптимальным для других форм архитектурного взаимодействия.- Филдинг, 2000