Как отправить запрос с использованием метода PATCH для обновления Salesforce? - PullRequest
3 голосов
/ 18 октября 2011

Я использую инфраструктуру Play для создания веб-приложения, которое интегрируется с Salesforce через их REST API.Чтобы отправить команду upsert на их интерфейс, кажется, что я должен использовать метод PATCH вместо запроса метода POST.Можно ли использовать объект WSRequest от Play и изменить тип метода на PATCH вместо POST?Если нет, то как я могу использовать объект запроса и вместо этого отправлять запрос PATCH?

Для целей обучения, что такое метод PATCH и почему Salesforce принудительно использует его вместо метода POST?

Ответы [ 2 ]

4 голосов
/ 18 октября 2011

Я не уверен в том, что доступно в Play, но из документации REST API есть обходной путь, если ваша библиотека не поддерживает PATCH:

Если вы используете библиотеку HTTP, которая не позволяет переопределять или задавать произвольное имя метода HTTP, вы можете отправить запрос POST и предоставить переопределение для метода HTTP с помощью параметра строки запроса _HttpMethod.

Например, для обновления учетной записи это будет работать с фактическим запросом POST:

.../services/data/v23.0/sobjects/Account/0016000000eEhmxAAC?_HttpMethod=PATCH

Что касается обоснования использования PATCH, то это потому, что PATCH для частичногообновления ресурса.То есть вам нужно только отправить поля, которые вы обновляете.Если бы вам было необходимо отправить все поля для записи в обновлениях, PUT, вероятно, будет лучшим выбором.POST, как правило, только для новых вкладышей.Вот объяснение с примерами: http://jasonsirota.com/rest-partial-updates-use-post-put-or-patch

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

Воспроизведение не включает метод PATCH в его библиотеке WS.

Вы можете вручную расширить некоторые классы из фреймворка в вашем приложении, чтобы добавить этот метод (в основном эти two ), но я считаю, что альтернатива, предоставляемая @ryanbrainard, лучше подход: используйте параметр _HttpMethod в POST, чтобы пометить как PATCH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...