如何更新休息服务中的 Sharepoint 2013 列表项
How to update share point 2013 list item in rest service
这是我更新列表项的 Rest 服务
- URL:
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"
}
当我 运行 这个 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 了解更多信息。
这是我更新列表项的 Rest 服务
- URL:
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" }
当我 运行 这个 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 了解更多信息。