使用 OData 更新记录

已完成

要使用 OData 更新现有记录,您需要使用 PUT 请求。 与使用 POST 请求类似,您需要在请求正文中以 JSON 文档形式提供要更新的记录。 但是,此时您还需要在 URL 中指定记录的主键。

此外,Business Central 需要确保您正在更新最新版本的记录,这就是它使用并发令牌的原因。 您必须在请求中以 HTTP 标头形式发送本令牌。 然后,Business Central 可以在数据库中验证您是否正在更新最新版本的记录,同时没有其他用户更新了该记录。 若要检索此令牌,您应先请求特定记录的详细信息,然后才能更新这些值。 当执行 GET 请求以检索数据时,您将收到一个 JSON 文档,其中包含 @odata.etag 键。 本键的值是您的并发令牌,您需要在 PUT 请求中复制和使用该值。

OData etag 示例的屏幕截图。

etag 值应以 If-Match HTTP 标头形式发送。 您可以选择标头,然后添加具有 etag 值的 If-Match 标头,如以下示例中所示。

@odata.etag 值是 JSON 文档中的字符串值。 JSON 文档中的字符串值始终以 "(双引号)字符开头和结尾。 但是,由于 @odata.etag 值本身也在字符串值中包含双引号字符,因此 @odata.etag 中的双引号为转义字符。 当您在 If-Match 标头中使用 etag 值时,您需要删除这些转义字符。

这意味着以下值:

W/\"JzQ0O3ZSUjBKTVdWenZvZ3IyTGlFSStWbllUVUNkdUZVQmxSV3p1dk1xMFo4REU9MTswDsn\"

会变为:

W/"JzQ0O3ZSUjBKTVdWenZvZ3IyTGlFSStWbllUVUNkdUZVQmxSV3p1dk1xMFo4REU9MTswDsn"

另请注意,URL 的目标为一条特定记录:主键为 10000 的客户记录。

具有 etag 值的 If-Match 标头的屏幕截图。