我是 MS Dynamics Business Central 的新用户,我正在构建自定义构建电子商务网站与 MS Dynamics 的集成,以进行库存管理和其他运营工作。
我可以运行多个 API 来获取公司信息、获取项目,但每当我尝试更新项目时,我总是收到“另一个用户已更改记录”的错误。我按照要求使用了 If-Match 标签,但可能我的电子标签不正确。您能检查一下问题出在哪里吗?
Etag 值为
"@odata.etag": "W/\"JzE5OzI1NzMyMzIyMjcyOTQ3OTQ4MzExOzAwOyc=\"",
更新项目的curl语句是
curl --location --request PATCH 'https://api.businesscentral.dynamics.com/v2.0/Development/api/v2.0/companies(CompanyNumber)/items(ItemNumber)' \
--header 'If-Match: W/"JzE5OzY1NDk0OTA1NDg2NTk1MDUwODExOzAwOyc="' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ' \
--data '{
"inventory":15
}'
我不断收到错误消息 "message": "另一用户已更改记录。CorrelationId: 081aa824-be35-4284-9c69-1ea39f8a8ce1。"
我觉得问题出在 ETag 值上,我删除了一些字符。有人可以帮忙并告诉我吗
您好,欢迎来到 MSDyn365BC 的精彩社区!
据我所知,乍一看你做的一切都是正确的。您删除了 ETag 中的反斜杠,并将 If-Match 键添加到 HTTP 请求的标头中,并使用稍微修改过的 ETag 作为其值。这是正确的。
要开始进行原型设计,您可以使用: " If-Match: * "
如果 ETag 与您请求使用的资源的当前 ETag 不匹配,您将不断收到 HTTP 状态代码 409。
无需赘述,每次有人使用(POST/PUT)此记录时,资源的状态都会发生变化,ETag 也会发生变化。因此,您需要为针对特定资源发送的每个新 HTTP 请求提供新的 ETag。
例如:
希望这有助于解决问题。
其他链接: