0

更新共享點2013列表項這是我的休息服務更新列表項如何休息服務

URL: 

https://site/_api/lists/getbytitle('Test')/items(49) 

Header 
    X-RequestDigest : some unique id from contextinfo post service 
    Content-Type  : application/json;odata=verbose 
    X-HTTP-Method  : MERGE 
    IF-MATCH   : 49 

Body 
    {"__metadata":{"type":"SP.Data.TestListItem"},"Title":"Title all1","Option1":"Updated 2"} 

當我運行在郵遞員這個網址我得到一個錯誤「請求ETag值「__metadata。 etag'與對象的ETag值'不匹配'\「8 \」'「

但是,如果我將標頭中的IF-MATCH值更改爲*,它會正確更新。爲什麼我在使用etag時遇到錯誤?

回答

1

您正在錯誤地使用ETag。該ETag將對應於物品的版本而不是物品的ID

測試此功能的最佳方法是對項目執行獲取請求並查看ETag屬性的元數據。你會看到類似這樣

{"__metadata":{"id":"Web/Lists(guid'xxxxxxxx')/Items(1)","uri":"https://site.sharepoint.com/site/subsite/_api/Web/Lists(guid'xxxxxx')/Items(1)","etag":"\"12\""

通知ETag的的格式。

我想不出有什麼好的理由在更新項目的情況下使用IF-MATCH作爲特定的ETag。該ID的請求參數應該綽綽有餘。當想要PUT,合併或刪除某個項目的特定版本時,需要使用ETags檢查版本控制。

檢查此Working with lists and list items with REST欲知更多信息。