Это REST, если я передам следующий URI / apps / {id}? Control = start - PullRequest
1 голос
/ 17 июля 2011

Я нахожусь в процессе разработки REST API для нашего веб-приложения.

POST> / apps> Создает приложение
PUT> / apps / {id}> Обновляет приложение

Я хочу запустить приложения. Это REST и если нет, как я могу сделать его более RESTful?

  1. POST> / apps / {id}? Control = start

Sun Cloud API делает это: http://kenai.com/projects/suncloudapis/pages/CloudAPISpecificationResourceModels

Или лучше:
2. PUT / apps / {id} и включить параметр статуса в ответ Json / XML?
3. POST / apps / {id} и включить параметр статуса в ответ Json / xml?
4. POST / apps / start? App = {id}

Ответы [ 4 ]

2 голосов
/ 09 сентября 2011

Изменяет ли запуск приложения его состояние?(например, «работает») Если он выполняет то, что вы на самом деле делаете, это обновляет состояние ресурса (приложения).Это похоже на хорошее использование для операции PUT.Хотя, как сказал Рэй, если управление является частью состояния ресурса, тело запроса PUT должно содержать состояние, которое вы обновляете.Я полагаю, что частичное обновление будет возможно (CouchDB использует это).

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

POST /app/1/start

, что приведет к HTTP/1.1 201 Created.Затем, чтобы получить доступ к информации о созданном выполнении, вы можете использовать следующий URL:

GET /app/1/execution/1

Для меня это может показаться хорошим подходом "Restful".Для получения дополнительной информации, прочитайте эту статью .

2 голосов
/ 17 июля 2011

Я думаю, что правильный вопрос здесь заключается в том, используются ли HTTP-глаголы по назначению, а не в том, является ли приложение или нет настолько RESTful, насколько это возможно.Тем не менее, в наши дни эти две концепции в значительной степени совпадают.

Суть PUT в том, что все, что вы PUT, вы сможете сразу же GET.Другими словами, PUT делает оптовую замену ресурса.Если ресурс, хранящийся в apps/5, является чем-то, что имеет атрибут «control» как часть своего состояния, то часть control = start должна быть частью представленного вами представления.Если вы хотите отправить только новый фрагмент ресурса, вы делаете PATCH, а не PUT.

PATCH не поддерживается широко, поэтому ИМХО вам следует использовать POST.POST не имеет требований безопасности или идемпотентности;как правило, вы можете делать с POST все, что захотите (более или менее), включая исправление частей ресурса.В конце концов это то, что вы делаете, когда создаете новый элемент в коллекции с помощью POST.Обновление части ресурса на самом деле не сильно отличается.

Обычно вы отправляете новые данные в теле запроса, а не в качестве параметров запроса.Параметры запроса используются в основном для GET, потому что вы, в общем-то, делаете запросы.:)

1 голос
/ 17 июля 2011

PUT apps/{id}

Я бы поставил приложение, чтобы обновить его статус с off до on

0 голосов
/ 17 июля 2011

Мне нравится делать что-то вроде

POST /runningapps?url=/app/1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...