2014-11-24 40 views
0

我正在使用非常未記錄的RESTful ADO .Net服務。我正在嘗試執行部分更新(如在剛剛通過已更改的數據中發送)。ADO .Net RESTful部分更新

我現在的要求是這樣的:

PUT https://{URL}/JobTypeMs(37294) 
Headers: 
    Accept: application/json 
    Content-Type: application/json 

Body: 
{ 
    "Jobtype_Name" : "Completed 2", 
    "Tenant_Id": "{A Long ID}", 
    "Job_Color_Code": "000000" 
} 

這樣做什麼,是「空」,我不通過(狀態和其他幾個列)發送/假/空白一切。我如何避免這種情況?

或者我會被迫在每次更新之前進行GET請求以獲取當前列,然後更改所有內容?

注意:我以前從未使用過ADO .Net,因此無法訪問ADO .Net服務以對其進行更改。我只能使用RESTful界面。我也不確定這是ADO .Net的特定實現還是標準問題。

UPDATE:作爲漂泊建議,這項服務不支持PATCH方法

回答

1

你可以試試,看看服務支持PATCH

擴展超文本傳輸​​協議的多個應用(HTTP) 需要一個功能來進行部分資源修改。現有的 HTTP PUT方法僅允許完整替換文檔。 此建議添加了一種新的HTTP方法PATCH,以修改現有的 HTTP資源。

參見The RESTful Cookbook中的this page

如果該服務不支持PATCH,那麼(如您所提到的),您將不得不先修改GET資源,然後PUT修改後的值。

請注意,此服務的行爲不依賴於ADO.NET或任何其他技術。任何開發堆棧都可以在服務器上使用,並以相同的方式實現。

+0

服務器迴應「方法不允許」。所以不幸的是PATCH不是這樣的:/。如果ADO .Net沒有規定這個服務器的行爲,那是什麼? (ADO .Net似乎相當具體)。或者你是否在談論REST,因爲一個概念不與ADO綁定? – Mattisdada 2014-11-24 01:06:48

+0

這是如何寫入服務方法的。使用任何服務器端堆棧(ADO.NET,Node.js,PHP),您可以編寫該方法來接受「PUT」的輸入並以此方式處理。實際上,「PATCH」提案的文檔表明這是正確的行爲。 ADO.NET是一種數據訪問技術,「開箱即用」不會實現Web服務所需的任何功能。 – 2014-11-24 01:10:22

+0

啊,這很公平。那麼如果你想到任何其他可能的解決方案,我很樂意聽到它,儘管目前的解決方案有效,但它非常慢(這個特定的API每個API調用需要5秒以上,所以GET + PUT需要10秒以上...不適合任何人) – Mattisdada 2014-11-24 05:11:22