REST: как указать серверу выполнить какой-либо фоновый процесс - PullRequest
10 голосов
/ 13 августа 2011

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

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

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

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

  • POST в / с параметром 'action' (JSON), детализирующим особенности
  • ПОСТАВИТЬ новый ресурс
    • последующие запросы GET вернут статус
    • после завершения команды ресурс удаляется

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

Примечание:

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

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

1 Ответ

9 голосов
/ 13 августа 2011

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

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

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

...