HTTP-статус 412 (предварительное условие не выполнено) и управление версиями базы данных

Я реализую веб-сервис RESTful, который обращается к базе данных. Объекты в базе данных имеют версии для обнаружения нескольких обновлений. Например, если текущее значение{"name":"Bill", "comment":"tinker", "version":3}, если один пользователь ставит{"name":"Bill", "comment":"tailor", "version":3}запрос будет выполнен успешно (200 OK), и новое значение будет{"name":"Bill", "comment":"tailor", "version":4}, Если второй пользователь ставит{"name":"Bill", "comment":"sailor", "version":3"} этот запрос не будет выполнен (конфликт 409), поскольку номер версии не совпадает.

Существуют интерфейсы без RESTful, поэтому дизайн баз данных нельзя изменить. Интерфейс RESTful вызывает существующий интерфейс, который обрабатывает детали проверки версии.

Основное правило в веб-сервисах RESTful - по возможности следовать деталям HTTP. Было бы лучше в этом случае использовать условный заголовок в запросе и возвращать 412 Precondition Failed, если версия не совпадает? Соответствующий заголовок выглядит как If-Match. Этот заголовок принимает ETag (Entity Tag), который может быть хэшем представления текущего состояния ресурса.

Если бы я сделал это, ETags были бы для внешнего вида, потому что версия все еще была бы реальной вещью, для которой я проверяю.

Есть ли какая-то причина, по которой я должен это делать, кроме как «сделать его более НАСТОЯЩИМ», что бы это ни значило?

Ответы на вопрос(1)

Ваш ответ на вопрос