RESTful способ указать команды на ресурсе - PullRequest
0 голосов
/ 22 июня 2019

Мне не удалось найти универсально приемлемый способ задания команд в режиме RESTful.Учтите, что у меня есть ресурс, для которого я хочу предоставить 3 команды:

  • включить
  • отключить
  • повторно запустить

Какой способ лучше всего подходит?

  1. POST /resource/disable
  2. POST /resource?command=disable
  3. Любой другой способ?

1 Ответ

0 голосов
/ 22 июня 2019

Какой самый RESTful способ?

Как бы вы сделали это с веб-сайтом? REST - архитектурный стиль всемирной паутины; если вы сможете понять, как вы это сделаете с веб-сайтом, это даст вам правильное представление о том, как предоставить RESTful API.

В Интернете обычным ответом будет то, что у нас будут формы для сбора информации от клиента, который затем отправит запрос POST (потому что мы намереваемся изменить ресурс) на какая-то конечная точка.

Поскольку свойство form.action сообщает клиенту, какой URI использовать, сервер может контролировать, что такое URI - мы можем изменить его позже, если захотим.

Мы могли бы, как вы предлагаете, иметь разные URI для каждой команды. В этом нет ничего плохого, но он упускает возможность. Видите ли, одна из важных идей в REST - это кэширование; и HTTP определяет аннулирование кэша семантика; практический аспект этого заключается в том, что если вы используете идентификатор /resource в качестве действия формы, то успешные запросы POST автоматически сделают недействительными локальные копии ресурса клиента.

Это, конечно, означает, что обработчик POST в вашей реализации должен будет определить, какая команда была предназначена - возможно, просмотрев информацию, включенную в тело запроса post; параметр "commandName" или что-то подобное.

...