如何更新休息服务中的 Sharepoint 2013 列表项

How to update share point 2013 list item in rest service

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

当我 运行 这个 URL 在 post man 我得到一个错误

The request ETag value __metadata.etag does not match the object's ETag value "8".

但是如果我将 header 中的 IF-MATCH 值更改为 *,它会正确更新。为什么使用 ETag 时会出现错误?

您错误地使用了 ETag。 ETag 将对应于项目的 Version 而不是项目的 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 的格式。

在更新项目的情况下,我想不出有什么好的理由对特定的 ETag 使用 IF-MATCH。 ID的请求参数应该绰绰有余。当想要 PUT、MERGE 或 DELETE 项目的特定 version 时,需要使用 ETag 检查版本。

查看此 Working with lists and list items with REST 了解更多信息。