2013-06-29 1 views
1

Когда я собираю HTTP-запрос PATCH, каковы мои параметры для включения данных вне параметров URL?Правильный способ включения данных с запросом HTTP PATCH

Будет ли любая из следующих работ, и какой наиболее распространенный выбор?

  • многокомпонентные/форма-данные
  • применение/х-WWW-форм-urlencoded
  • Raw JSON
  • ... любые другие?

ответ

2

Нет никаких ограничений на тела сущностей HTTP PATCH запросов, как определено в RFC 5789. Поэтому теоретически ваши варианты в этой области не ограничены.

На мой взгляд, единственный разумный выбор - использовать тот же самый Content-Type, используемый для первоначального создания ресурса. Наиболее распространенным вариантом является application/json просто потому, что большинство современных API-интерфейсов используют JSON в качестве предпочтительного формата передачи данных.

только Релевент заявление RFC 5789 делает в отношении того, что должно и не должно быть частью вашего тела PATCH сущности молчит по вопросу Content-Type:

приложенный объект содержит набор инструкций, описывающий как ресурс, находящийся в настоящее время на сервере происхождения, должен быть изменен для создания новой версии.

Таким образом, как вы решили изменить ресурсы в своем приложении, зависит только от вас.

+0

Nope. Тип носителя должен описывать формат патча. Если вы предъявляете иск к типу мультимедиа, которому не хватает определения для использования в PATCH, вы не используете PATCH так, как предполагается, он будет использоваться. –

+0

@JulianReschke не стесняйтесь делать что-то продуктивное и размещать ссылку RFC для вашего заявления, чтобы люди могли извлечь выгоду. В противном случае вы никому не помогаете. В частности, если этот ответ неверен, вы должны опубликовать его правильно. – rdlowrey

+0

См. Http://www.rfc-editor.org/errata_search.php?rfc=5789 –

2

Как пишет rdlowrey, RFC 5789 не предоставляет определенные типы контента, поэтому это зависит от вас. Тем не менее, я бы посоветовал не использовать общие форматы, которые вы указали, или составлять свой собственный формат, потому что это не совместимо, и разработчикам нелегко определить семантику, которую вы выбрали.

(по крайней мере) при работе с данными, первоначально размещенными как JSON, я полагаю, что использование JSON Patch (RFC 6902) можно считать «стандартным» выбором. Он был специально разработан для использования с PATCH и использует собственный тип носителя application/json-patch+json.