Подтвердить что ты не робот

REST: как сообщить серверу о выполнении какого-либо фонового процесса

Я создаю клиентский продукт с REST. Все взаимодействия с пользователем будут выполняться с помощью браузера (содержимое конфиг будет на сервере, запущенном на localhost). Я хочу, чтобы все было совместимо с REST, хотя приложение будет работать на клиентской машине в localhost и никогда не будет доступно извне.

Команды довольно просты:

  • обновление
  • перезагрузка
  • синхронизация

Вот что я придумал:

  • POST в/с параметром "action" (JSON), детализирующим особенности
  • PUT новый ресурс
    • последующие запросы GET вернут статус
    • когда команда завершена, ресурс удаляется

Какой был бы самый RESTful способ реализовать это?

Примечание:

Я не прошу проверить мою архитектуру программного обеспечения. У меня есть причины для выбора интерфейса REST вместо сокета домена unix, интерфейса CLI или даже обычного интерфейса графического интерфейса. Обоснование будет затруднять вопрос и сделать его слишком локализованным.

У меня была такая же потребность в нескольких разных проектах (как на клиенте, так и на сервере), и я ищу информацию для сообщества о лучших практиках.

4b9b3361

Ответ 1

Я бы отправил POST на ресурс /process с соответствующими параметрами, необходимыми для запуска процесса, тогда я бы хотел, чтобы он возвращал заголовок Location к этому ресурсу, который фактически представляет статус процесса (/process/123). Затем вы можете использовать GET для этого процесса, чтобы получить самую свежую информацию об этом.

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

Отмечая, что клиент может, конечно, УДАЛИТЬ ресурс, когда это будет сделано, или вы можете очистить его позже после некоторого разумного времени, когда того, кто его интересует, скорее всего, не будет.