Http PUT, чтобы делать инкрементные обновления - PullRequest
0 голосов
/ 15 октября 2011

Мы внедрили веб-сервис RESTful. Вот как это выглядит

GET /person/1234
GET /person/list

POST /person
POST /person/list

PUT /person/1234
PUT /person/list

По сути, для создания Персоны, которую вы размещаете в / person или / person / list

Чтобы обновить человека, вы кладете в / person / 1234 или / person / list

Человек выглядит так:

<person>
  <id>1234</id>
  <name>Name1</name>
  <age>50</age>
  <education>high school</education>
</person>

Вопрос: Могу ли я использовать PUT, чтобы обновить человека, отправив

<person>
  <age>55</age>
</person>

Как я понимаю, PUT, вы не можете использовать его для дополнительных обновлений. Разве я не должен использовать POST для этого?

Можем ли мы ослабить определение PUT для этого варианта использования, чтобы упростить терминологию. Так как тогда PUT будет означать обновление, POST будет означать создание.

Предположим, что вы не можете попросить клиента отправить полное представление ресурса для обновлений.

Ответы [ 3 ]

1 голос
/ 15 октября 2011

Вам будет неоднократно повторяться, что вы не должны делать частичное ПОЛОЖЕНИЕ. Спецификация говорит, что вы не должны этого делать. Тем не менее, мне еще предстоит услышать убедительный аргумент о том, каковы негативные последствия этого.

Одна из более длинных тем на эту тему находится здесь http://tech.groups.yahoo.com/group/rest-discuss/message/17500

1 голос
/ 15 октября 2011

Если ваш клиент поддерживает это, я думаю, PATCH - это то, что вы ищете:

PATCH для переопределения части указанного ресурса предсказуемым и эффективно транзакционным способом (если полное исправление не может быть выполнено, сервер не должен выполнять какую-либо его часть)

...