Можно ли вернуть самую последнюю версию объекта в случае 412 «Предварительное условие не выполнено» - PullRequest
1 голос
/ 14 сентября 2011

При выполнении PUT или DELETE с заголовком «If-Match», если ETag, отправленный клиентом, указывает на устаревание, а не просто возвращает 412, я хотел бы вернуть всю актуальную сущность (включая его новый ETag в заголовке HTTP), поэтому клиенту не нужно выполнять еще один обход GET, что они, в противном случае, наверняка сделали бы - в моем случае использования, по крайней мере, в 100% случаев.

Я не вижу ничего за или против в документах для 412: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.13

И, глядя, скажем, на код состояния 409, в общем, не кажется проблемой сделать что угодно с телом ответа об ошибке 4xx: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10

Итак, что-нибудь (особенно в спецификации HTTP) говорит против возврата полной актуальной сущности и ее ETag?

Ответы [ 2 ]

1 голос
/ 11 октября 2011

должно быть в порядке:

Все 1xx (информационное), 204 (без содержимого) и 304 (без изменений) ответы НЕ ДОЛЖНЫ включать тело сообщения. Все остальные ответы делают включите тело сообщения, хотя оно МОЖЕТ быть нулевой длины.

Источник: http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3

0 голосов
/ 14 сентября 2011

Что за запрос?ПОЛУЧИТЬ If-None-Match?В этом случае сервер не должен возвращать 412.

Для PUT, DELETE вы, безусловно, можете вернуть текущее представление.Для больших представлений это будет неудобно для клиентов, которым это не нужно.

Вы также можете пометить полезную нагрузку как представление ресурса, используя заголовок Location;см http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-16.html#identifying.response.associated.with.representation.

...