Метод HTTP, чтобы представить “огонь и забыть” действия в УСПОКОИТЕЛЬНОМ сервисе

Думая о REST, относительно легко отобразить методы HTTP на действия CRUD: POST для создает, ДОБИРАЕТСЯ для чтения и т.д. Но что относительно "огня и забывают" действия? Какой метод HTTP лучше всего представил бы огонь и забыл бы действие, такое как инициирование пакетного задания (в котором никакой ответ не передают обратно вызывающей стороне)?

POST пришел бы на ум, но я думаю, ДОБИРАЮТСЯ, также соответствующий метод, потому что 99% времени Вы только предоставляете набор параметров к этим типам действий. Что Вы думаете?

6
задан Richard Kettelerij 18 January 2012 в 16:59
поделиться

4 ответа

На ум приходит POST, но я думаю, что GET - более подходящий метод, потому что в 99% случаев вы предоставляете только набор параметров для этих типов действий. Что вы думаете?

Внешнее состояние

Я думаю, что количество используемых вами параметров не имеет ничего общего с используемым вами глаголом. Ключевой вопрос в том, меняете ли вы внешне видимое состояние?


Ресурсы BatchJob

В вашем примере, если пакетное задание не влияет на внешнее видимое состояние какого-либо объекта, вы можете реализовать его как пакетное задание. Однако вы можете смоделировать свое пакетное задание как ресурс со связанным контейнером ресурсов.

Вы можете использовать Post, чтобы создать новый ресурс BatchJob и позволить пользователю выполнить GET, чтобы увидеть, как продвигается работа на данный момент. Вы можете выполнить GET в контейнере ресурсов, чтобы перечислить все запущенные пакетные задания, возможно, вызвав DELETE, чтобы убить одно из них.

11
ответ дан 8 December 2019 в 18:30
поделиться

Вы должны использовать POST, если ваш запрос изменяет данные, и GET, если он только читает их.

Поскольку ваш запрос - «запустил и забыл», я предполагаю, что он изменяет данные, поэтому используйте POST.

1
ответ дан 8 December 2019 в 18:30
поделиться

Я думаю, что в общем случае мы вполне можем предоставлять различные параметры полезной нагрузки, и они, вероятно, могут превышать то, что возможно с помощью GET, поэтому POST вполне разумен - действие запуска задания, на мой взгляд, не очень подходит для семантики GET.

Одна мысль, не может ли действие на самом деле вернуть ответ:

a). Нет, сэр, это невозможный запрос, мы не можем начать вашу работу. b). Понятно, ваш номер вакансии 93.

1
ответ дан 8 December 2019 в 18:30
поделиться

Если вас беспокоит этот уровень, возможно, вам нужен метод HTTP HEAD; он идентичен GET с условием, что тело ответа пусто. Мне кажется, это соответствует тому, о чем вы просите?

0
ответ дан 8 December 2019 в 18:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: