LINUX.ORG.RU

История изменений

Исправление k0valenk0_igor, (текущая версия) :

Сделать отдельный url вида /orders/take/100500 и слать туда POST, или пытаться сделать права таким образом, чтобы на /orders/100500/ можно делать PUT/PATCH, но проверять, что меняется только одно поле,

Однозначно второе.

И какой код возвращать в ситуации, если уже кто-то другой принял заказ? 403 Forbidden?

В принципе, можно и его. Но вообще-то «400 Bad request» считается как бы общепринятым вариантом, поскольку «403 Forbidden» резервируется для ответа на попытку доступа при отсутствии прав на это. С другой стороны, если вы уверены, что ПО-потребитель Вашего сервиса реализован грамотно, то оптимумом будет «406 Not Acceptable»

Исходная версия k0valenk0_igor, :

Сделать отдельный url вида /orders/take/100500 и слать туда POST, или пытаться сделать права таким образом, чтобы на /orders/100500/ можно делать PUT/PATCH, но проверять, что меняется только одно поле,

Однозначно второе.

И какой код возвращать в ситуации, если уже кто-то другой принял заказ? 403 Forbidden?

В принципе, можно и его. Но вообще-то «Bad request» считается как бы общепринятым вариантом, поскольку «Forbidden» резервируется для ответа на некорректные права доступа.