Я работаю над REST API, который позволяет запускать процессы на ранее добавленных ресурсах.
Управление ресурсами и процессами осуществляется, как в следующем примере ( Это упрощенное представление ):
//Setup the process basics
POST /processes
PATCH /processes/{pid}
DELETE /processes/{pid}
//Add, update, delte entities to process
POST /processes/{pid}/entitiesToProcess
PATCH /processes/{pid}/entitiesToProcess/{eid}
DELETE /processes/{pid}/entitiesToProcess/{eid}
//Execute the process
POST /processes/{pid}/run
GET /processes/{pid}/run/{rid}
DELETE /processes/{pid}/run/{rid}
После вызова POST / processs / {pid} / run службы REST начинают обрабатывать все ранее добавленные "ProperitesToProcess". Во время работы он должен отклонять запросы к своим ресурсам.
После прочтения доступных кодов состояния ответа HTTP я предполагаю, что это должно быть несколько (или комбинация) из следующего:
- 409 - Конфликт
- 412 - Сбой предварительного условия
- 423 - заблокировано
- 428 - Требуется предварительное условие
Поскольку вызов POST / Процессы / {PID} / Выполнение позволяет отклонить манипулирующие вызовы, я предполагаю, что я должен использовать предварительное условие, как "токен блокировки" в заголовке этого вызова , Если это предварительное условие отсутствует, ответом будет 412 - Предварительное условие не выполнено .
Как только запрос будет выполнен успешно, служба REST заблокирует все связанные ресурсы, и любой манипулирующий вызов к ним приведет к ответу 423 - Locked , пока процесс выполняется.
Если этот подход верен, мне интересно ...
- как должен выглядеть отправленный "токен блокировки",
- как должен выглядеть обязательный код "предусловия" или "постусловия" ответа 423 - Lock и
- если маркер блокировки в запросе POST / projects / {pid} / run вообще необходим, так как блокировка будет только временной и на время выполнения процесса?
Как будет выглядеть код «предусловия» или «постусловия» в ответе 423 - Lock в этом случае?