Как мне обновить ресурс REST? - PullRequest
5 голосов
/ 30 июня 2010

Я не уверен, как мне следует обновлять отдельные свойства ресурса REST. Рассмотрим следующий пример:

# HTTP GET to /users/1.xml
<?xml version="1.0" encoding="UTF-8" ?>
<response>
   <user>
      <id>1</id>
      <name>John Doe</name>
      <email>john@doe.com</email>
   </user>
</response>

Как мне помочь обновить электронную почту Джона? HTTP PUT приходит на ум, но я бы усложнил работу моих клиентов, потребовав полный XML (соответствующий ответ HTTP GET) для изменения ресурса.

Метод PUT запрашивает, чтобы закрытая сущность должна храниться под предоставлен Request-URI. Если Request-URI относится к уже существующий ресурс, вложенный объект СЛЕДУЕТ рассматривать как измененный версия того, который проживает на исходный сервер.

Есть ли другой способ?

1 Ответ

7 голосов
/ 30 июня 2010

Если ваш серверный фреймворк достаточно гибок, чтобы справиться с ним, вы можете сделать:

Request:
PUT /users/1/email
Content-Type: text/plain

john@newemail.com

Response:
200 OK
Content-Location: /users/1

Используя URL-адрес для ссылки на электронное письмо как на собственный ресурс, вы можете PUT напрямую к нему, используя простойформат как текст / обычный.В ответе URL-адрес Content-Location дает клиенту указание на то, что изменение оказало влияние на ресурс пользователя.

Метод PATCH - это еще один способ частичного обновления.Это недавно введенный метод, и пока нет стандартных форматов для отправки документов различий XML.Поэтому, если вы воспользуетесь этим подходом, вы не найдете много рекомендаций.

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

...