2011-10-17 95 views
3

我正在使用Play框架構建一個通過其REST API與Salesforce集成的Web應用程序。爲了向其接口發送upsert命令,看起來好像我必須使用PATCH方法而不是POST方法請求。是否可以使用Play的WSRequest對象並將方法類型更改爲PATCH而不是POST?如果沒有,我該如何使用請求對象併發送PATCH請求呢?如何使用PATCH方法爲Salesforce更新發送請求?

爲了學習目的,什麼是PATCH方法,以及爲什麼Salesforce強制使用它而不是POST方法?

回答

4

我不知道什麼是在玩可用,但是從REST API documentation,這裏是一個解決辦法,如果你的庫不支持PATCH:如果您使用不HTTP庫

允許覆蓋或設置任意HTTP方法名稱,您可以發送POST請求並通過查詢字符串參數 _HttpMethod向HTTP方法提供覆蓋。

例如,要更新帳戶,這將有一個實際的POST請求的工作:

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

至於後面使用PATCH的理由,這是因爲補丁是用於局部更新的資源。也就是說,您只需發送正在更新的字段。如果你需要發送更新記錄的所有字段,PUT可能是更好的選擇。 POST通常僅用於新插入。這裏是一個例子的解釋: http://jasonsirota.com/rest-partial-updates-use-post-put-or-patch

+0

好的解釋! – metadaddy

+0

不再有效 –

+0

這仍然適用於我:https://gist.github.com/ryanbrainard/9765354 – ryanbrainard

1

播放不包括他的WS庫中的PATCH方法。

您可以手動從擴展的框架部分班級在您的應用程序添加此方法(主要是thesetwo),但我相信,通過@ryanbrainard提供的替代是尤爲明顯的方法:使用_HttpMethod參數在POST來標記是作爲補丁。

相關問題