如何从 javascript 的 SAP Cloud SDK 中的 DocumentInfoRecord get() 调用获取 eTag(元数据)?

How to get the eTag(MetaData) from a DocumentInfoRecord get() call in SAP Cloud SDK for javascript?

我使用 SAP Cloud SDK for javascript 来处理 DocumentInfoRecords。 DIR 更新导致错误 428。 所以我需要像 SAP Cloud API.

中的请求的 etag

如何获取GET请求中的etag或者一般每个sdk请求的header响应信息?

获取:

DocumentInfoRecord.requestBuilder()
.getByKey(dir.documentInfoRecordDocType, dir.documentInfoRecordDocVersion, dir.documentInfoRecordDocNumber, dir.documentInfoRecordDocPart)
.execute({});

使用 etag 更新

DocumentInfoRecord.requestBuilder().update(dir).withCustomHeaders({ key: "If-Match", value: "etag" }).execute({});

更新:请参阅 Henning Heitkötter 的回答。


目前我们不支持电子标签处理。我们意识到这个缺点,并且已经在我们的积压中。一旦该功能可用,我们将更新此答案。

自版本 1.1.0 起,适用于 JavaScript 的 SAP Cloud SDK(fka SAP S/4HANA Cloud SDK)在后台透明地处理 ETag。有关详细信息,请查看 release blog.

中有关乐观并发控制的部分

如果您更新到最新版本(撰写本文时为 1.2.1),您可以简单地检索文档信息记录,更改要更改的字段,然后通过发送相同的对象来更新它服务。

var dir = await DocumentInfoRecord.requestBuilder()
    .getByKey(dir.documentInfoRecordDocType, dir.documentInfoRecordDocVersion, dir.documentInfoRecordDocNumber, dir.documentInfoRecordDocPart)
    .execute({destinationName: "MyServer"});
dir.responsiblePersonName = "John Doe";
DocumentInfoRecord.requestBuilder()
    .update(dir)
    .execute({destinationName: "MyServer"})
    .then(...);