Какой HTTP-глагол мне следует использовать для запроса и блокировки элемента в очереди заданий?
Основная идея: REST API - это фасад - ваше приложение / служба претендует на то, чтобы быть HTTP-совместимое хранилище документов. Все интересные вещи, которые случаются побочные эффекты , вызваны изменением документов. См. Джим Уэббер, 2011 .
Имея это в виду ...
POST - это хорошо. Можно использовать POST .
PUT / PATCH хороши для удаленной авторизации; клиент выбирает ваше представление ресурса, вносит изменения в его локальную копию и отправляет вам копию представления (PUT) или документ исправления, описывающий изменения (PATCH). Затем сервер может применить эти изменения к своей копии или нет.
Так что для вашего конкретного примера c я бы ожидал, что клиент GET
представит ваш ресурс, изменит информацию в этом представлении. от разблокированного к заблокированному, а затем, чтобы положить измененное представление обратно на ваш сервер. Ожидается, что ваш сервер обновит вашу копию представления для соответствия.
Это может напомнить вам о декларативном стиле - клиент сообщает серверу, как должно выглядеть представление, и это зависит от сервера, чтобы определить Как это сделать.
Включено для полноты, НЕ РЕКОМЕНДУЕТСЯ:
В реестре HTTP-метода также имеется метод LOCK с соответствующим ОТКРЫТЬ. Семантика для этих токенов метода определяется спецификацией WebDAV . Если ваше значение LOCK совпадает со значением WebDAV, то использование этого может быть ответом. Обратите внимание, что в спецификации содержатся комментарии, такие как
. Любой ресурс, поддерживающий метод LOCK, ДОЛЖЕН, как минимум, поддерживать форматы запросов и ответов XML, определенные в данном документе.
вы уже находитесь в пространстве, где люди ожидают, что смогут использовать клиенты WebDAV общего назначения для взаимодействия с вашим API, что, вероятно, не очень подходит.
Реестр метода HTTP: extendedable . Таким образом, вы можете определить семантику вашего собственного токена метода, а затем pu sh, чтобы он был принят в качестве стандарта.