OData 请求/响应_metadata节点内属性 id 和 uri 之间的区别?



OData 请求/响应_metadata节点中的属性iduri有什么区别?UI5应用程序发送的所有请求/响应都包含每次相等的两个属性。这不是不必要的冗余吗?网关服务器中是否有与这些属性对应的配置?我希望这里只有一个属性包含仅与服务部分相关的键,即SERVICE_ID/Entity_Name/键

我目前正在使用1.71

let oDataResponse = {
"d": {
"__metadata": {
"id": "https://domain:port/sap/opu/odata/sap/SERVICE_ID/HeaderSet('000001234567890')",
"uri": "https://domain:port/sap/opu/odata/sap/SERVICE_ID/HeaderSet('000001234567890')",
"type": "SERVICE_ID.Header"
},
"FIELD_1": "abc",
"FIELD_2": "abc",
"FIELD_N": "abc"
}
};

ID 可以是相对 URL,在瞬态请求的情况下可以为 null。此外,在其他几种情况下,它可能与 url 不同,请参阅 odata 文档:

id 控件信息包含实体 ID,请参阅 [OData-Protocol]。按照惯例,实体 ID 与 实体的规范 URL,如 [OData-URL] 中所定义。

如果元数据=完整,则 id 控件信息必须出现在响应中 被请求,或者如果请求元数据=最小值并且任何 响应中省略了非暂时性实体的关键字段或 实体 ID 与之后实体的规范网址不同

· [RFC3987] 中定义的 IRI 到 URI 转换,

· [RFC3986] 第 5.2 节中定义的相对分辨率, 和

· 第 6 节中定义的百分比编码规范化 [RFC3986]。

请注意,实体 ID 在语言之间必须是不变的,所以 if 键 值与语言相关,那么如果包含,则必须包含 id 与本地化键值的约定不匹配。如果 id 是 表示,它可能是一个相对 URL。

如果实体是暂时性的(即无法读取或更新(,则 id 控件信息必须出现在 OData 4.0 有效负载中,并且具有 空值。在 4.01 有效负载中,瞬态实体不需要具有 id 控制信息,并且 4.01 客户端必须处理两者均不具有的实体 ID控制信息或全套关键属性作为瞬态 实体。

ID 控件信息不得出现在集合中。其 此上下文中的含义保留给此的未来版本 规范。

id 等于 null 的实体不能与其他实体进行比较, 重读或更新。如果指定了元数据=最小值,而 id 未指定 存在于实体中,则必须将规范 URL 用作 实体标识。

最新更新