如何在休息服务中更新共享点2013列表项

问题描述 投票:0回答:1

这是我更新列表项的Rest服务

  • 网址:https://site/_api/lists/getbytitle('Test')/items(49)
  • X-RequestDigest: some unique id from contextinfo post service Content-Type: application/json;odata=verbose X-HTTP-Method: MERGE IF-MATCH: 49
  • 身体 { "__metadata": { "type": "SP.Data.TestListItem" }, "Title": "Title all1", "Option1": "Updated 2" }

当我在post man中运行此URL时出现错误

请求ETag值__metadata.etag与对象的ETag值"8"不匹配。

但是如果我将标题中的IF-MATCH值更改为*,它会正确更新。如果使用ETag,为什么我会收到错误?

rest sharepoint sharepoint-2010 sharepoint-2013 sharepoint-workflow
1个回答
1
投票

您错误地使用了ETag。 ETag将对应于项目的版本而不是项目的ID。

测试此方法的最佳方法是对项目执行get请求并查看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,MERGE或DELETE特定版本的项目时,需要使用ETag检查版本控制。

查看此Working with lists and list items with REST以获取更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.