ETag

ETag — это строка, которую сервер добавляет к ответу, чтобы идентифицировать конкретную версию конкретного представления. Она непрозрачна: это может быть хеш, номер версии или метка времени, и клиент никогда не должен пытаться её интерпретировать — только отправить её обратно.

Как это работает

При чтении клиент возвращает ETag в заголовке If-None-Match; если он по-прежнему совпадает, сервер отвечает 304 Not Modified без тела запроса, и клиент использует свою кэшированную копию. При записи клиент отправляет его в заголовке If-Match; если он больше не совпадает, сервер отвечает 412 Precondition Failed, и запись отклоняется. Одно и то же значение, два заголовка, две совершенно разные задачи — одна экономит пропускную способность, другая предотвращает потерю обновления.

Заблуждение

Ошибка ETag означает, что что-то пошло не так. Код 412 указывает на срабатывание механизма: это означает, что кто-то другой изменил ресурс с момента вашего прочтения, и ваша запись незаметно перезаписала бы его данные. Правильный ответ — повторно прочитать, согласовать и попробовать снова с новым ETag, а не пытаться со старым, который навсегда потерпит неудачу.

Попробуйте здесь.

Конечные точки для футбола и турнирной таблицы ФИБА отвечают на условные запросы кодом 304. Конечные точки для персонажей, героев и фильмов принимают условия If-Match и выдают код 412, если версия устарела.

Источники

Другие термины

Читать страницу на английском

Все термины · Приёмы тестирования · Все 39 mock REST API

Последнее обновление