如何使用PATCH方法为Salesforce更新发送请求?

时间:2011-10-17 20:43:11

标签: java playframework salesforce

我正在使用Play框架构建一个Web应用程序,该应用程序通过其REST API与Salesforce集成。为了向其接口发送upsert命令,似乎我必须使用PATCH方法而不是POST方法请求。是否可以使用Play的WSRequest对象并将方法类型更改为PATCH而不是POST?如果没有,我如何使用请求对象并发送PATCH请求?

出于学习目的,什么是PATCH方法以及为什么Salesforce强制使用它而不是POST方法?

2 个答案:

答案 0 :(得分:4)

我不确定Play中可用的内容,但是从REST API documentation开始,如果您的库不支持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 :(得分:1)

Play在他的WS库中不包含PATCH方法。

你可以在应用程序的框架中手动扩展一些类来添加这个方法(主要是these two),但我相信@ryanbrainard提供的替代方法是一种更好的方法:使用POST to flag中的_HttpMethod参数为PATCH。