Должен ли HTTP-запрос RESTful, который напрямую не приводит к манипулированию данными, но запускает манипулирование, иметь действие GET, PUT или POST? - PullRequest
7 голосов
/ 01 июня 2011

Вот вопрос для вас, RESTful ботаники.Позвольте мне установить сцену.

Допустим, у меня есть удаленная система с именем ChickenShack и локальная система с именем BurgerShack, которые интегрированы таким образом, что каждая система поддерживает «синхронизированную» копию данных сущностей.Когда происходит изменение сущностей в ChickenShack, он отправляет коллекцию идентификаторов этих сущностей в виде запроса RESTful к BurgerShack.Затем BurgerShack отправляет запрос GET в ChickenShack, запрашивая все атрибуты измененного объекта и обновляя локальную копию объекта.

enter image description here

Все это асинхронно и разработано на основенекоторые ограничения (поэтому, если вам плохо на вкус, поймите, что в жизни иногда приходится есть дерьмо и улыбаться).

Мой вопрос: должен ли начальный запрос, исходящий от ChickenShack к BurgerShack, быть GET или PUTзапрос?Поскольку первоначальный запрос идемпотентен, часть меня говорит «ПОЛУЧИТЬ».Тем не менее, это в конечном итоге приводит к изменению данных в Burger, поэтому другая часть меня говорит "PUT" или "POST".

Что вы думаете?

1 Ответ

9 голосов
/ 01 июня 2011

Я бы выбрал POST, потому что:

  • он действительно изменяет состояние в BurgerShack (я не думаю, что он идемпотентен, потому что он запускает GET из BurgerShack в ChickenShack)
  • он не создает новый ресурс по указанному URL (что исключает PUT)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...