2015-02-26 2 views
0

У меня есть служба REST-ful, которая использует заголовки ETags и If-Match для управления обновлениями.HTTP-статус ответа для отсутствующего заголовка if-match

Если клиент отправляет условный запрос с заголовком If-Match, а ETag устарел, я возвращаю условие 412 Precondition Failed, которое является рекомендуемым подходом к несоответствию ETag.

Но что, если клиент отправляет без заголовка If- *? Мое понимание 412 заключается в том, что оно применяется к предварительным условиям Клиента. Поскольку клиент не отправил заголовок If-Match, предварительных условий клиента не существует. Но если я хочу потребовать If-Match, какой ответ я должен использовать?

Мое мышление до сих пор возможно 400 Bad Request или 409 Conflict. Есть ли лучшие практики?

ответ

1

Я думаю, что код 400 является немного общим, но может применяться. В таком случае вам нужно предоставить более подробную информацию о проблеме в пределах содержимого ответа.

IMO, код 409 следует использовать, если есть конфликт с текущим состоянием ресурса. Я думаю, что это больше в случае, когда вы реализуете оптимистичную блокировку самостоятельно, не используя заголовки ETag и If-*.

Я видел код 428 (обязательно условие), которое соответствует вашим потребностям.

На следующей странице вы можете получить более подробную информацию: http://www.restapitutorial.com/httpstatuscodes.html.

Надеется, что это помогает вам, Тьерри

+0

428 является правильным кодом. Правильное место для поиска вещей, хотя есть http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml –

Смежные вопросы