Должен ли метод PATCH возвращать все поля ресурса в теле ответа?

Должен ли метод PATCH возвращать все поля ресурса в теле ответа?
Или он должен возвращать только обновленные поля?

я читаюэтот

Например, если он возвращает только обновленные поля, пользователь может знать, какие поля были обновлены на сервере, в то время как пользователь обновил некоторые поля.

**Users resource representations**
name: string
age: number
createdon: date
modifiedon: date


PATCH /users/{userId}
Request body
{
  name: 'changedname',
}


Response body Case1
{
  name: 'changedname',
  age: 20,
  createdon: 2016-01-01,
  modifiedon: 2016-06-09
}


Response body Case2
{
  name: 'changedname',
  modifiedon: 2016-06-09
}

Ответы на вопрос(3)

Решение Вопроса

Обычно это должно быть обработано черезсогласование содержания, Другими словами, клиентспрашивает для конкретного представления, если оно необходимо. Запрос будет выглядеть так:

PATCH /user/123
Content-Type: application/merge-patch+json
Accept: application/vnd.company.user+json
...

В этом случае клиент выражает, что он хочет полныйuser представление в качестве ответа. Или это может сделать:

PATCH /user/123
Content-Type: application/merge-patch+json
Accept: application/vnd.company.object-fragment+json
...

попросить общее представление фрагмента некоторого объекта.

Вам не нужно реализовывать оба, если вы не хотите, в этом случае вы просто делаете свой вариант использования и отвечаете406 Not Acceptable вmedia-types Вы не поддерживаете на данный момент.

что спецификация REST (кстати, я думаю, что вы должны смотреть наRFC 6902 для этого) обеспечивает соблюдение любых строгих правил (то, что вы должны возвращать). Я бы предпочел вернуть весь ресурс, чтобы клиент мог использовать его так, как ему нужно. Теоретически, клиент сам знает, что было исправлено (по крайней мере, запрос был). Получение подтверждения от сервера может быть нетривиальным (особенно если учесть, что PATCH чаще всего используется для коллекций) или, по крайней мере, не стоит.

 Juha Untinen15 сент. 2017 г., 12:31
Хотя любопытно, что это говорит о документе, но больше ничего.Successful PATCH response to existing text file: HTTP/1.1 204 No Content Content-Location: /file.txt ETag: "e0023aa4f"
 Juha Untinen15 сент. 2017 г., 12:37
Тем не менее, это также говорит:Note that other success codes could be used as well. (кроме 204)
 Juha Untinen15 сент. 2017 г., 12:30
Есть определение в RFC 5789, раздел 2.1:tools.ietf.org/html/rfc5789#section-2.1

Если вы хотите контролировать это, вы можете посмотреть наhttps://greenbytes.de/tech/webdav/rfc7240.html#return для вдохновения.

Ваш ответ на вопрос