Как я должен обновить ресурс REST?

Я не уверен, как я должен пойти об обновлении отдельных свойств ресурса 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>

Как я должен упростить для обновления электронной почты John's? HTTP PUT приходит на ум, но я мешал бы на своих клиентах путем требования полного XML (соответствие HTTP ПОЛУЧАЮТ ответ) изменить ресурс.

ПОМЕЩЕННЫЙ метод запрашивает, чтобы вложенный объект был сохранен под предоставленным URI запроса. Если URI запроса относится к уже существующему ресурсу, вложенный объект НУЖНО рассмотреть как измененную версию той, находящейся на сервере источника.

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

5
задан Johannes Gorset 30 June 2010 в 14:33
поделиться

1 ответ

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

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

john@newemail.com

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

Используя URL-адрес для ссылки на электронное письмо как на его собственный ресурс, вы можете ПОЛУЧИТЬ прямо к нему, используя простой формат, например текстовый / простой. В ответ URL-адрес Content-Location дает клиенту указание на то, что изменение повлияло на пользовательский ресурс.

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

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

7
ответ дан 14 December 2019 в 08:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: