这是我更新列表项的Rest服务
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,为什么我会收到错误?
您错误地使用了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以获取更多信息。