本博客是一系列教程的一部分,详细解释了SAP云平台后端服务的用法。
如您所知,后端服务允许基于给定模型创建API。此类模型的类型可以是CDS、edmx或openAPI。你可能想知道为什么我们要把重点放在教程系列的CD上。原因是CD很强大。
在之前的博客文章中,我们已经学习了一些CD魔术管理的关联以及运行时关联的隐式重定向。
在本博客中,我们将学习另一个神奇功能:自动密钥生成。
酷,我想这个功能很久了然后您可以直接跳转到解决方案。
背景
在我们前面的示例中,在创建示例数据时,我们使用带有数字的键字段(如"customerID")作为可能的数据类型(整数)因此,大数据网,在创建样本数据时,我们必须确保始终使用一个唯一的数字,这是以前从未使用过的。那当然不太方便。那么我们有什么软件呢?是的,我们想要的是找到一个合适的未使用的号码。或者为我们生成一个唯一的标识符。
解决方案
超级明星来了:
CDS有解决方案,它是
U U I D
数据类型。
有关CD类型的文档,请参阅SAP帮助门户。
在许多情况下,在为数据模型建模时,可以将关键属性的数据类型指定为UUID
示例:
好处
好处是:为这些属性创建条目时,不需要为键指定任何内容。它总是生成的。
测试它为上面的例子创建一个API,你可以像这样创建你的宠物:
{"name":"小猫","物种":"青蛙"}
如您所见,键字段甚至没有在有效负载中指定。即使您要指定任何值,它也会被覆盖。
创建条目时,您甚至可以多次点击"执行"按钮。哇,我一直想这么做这不是问题,物联网水表,因为关键字段总是不同的。但是青蛙的名字会是一样的…拥有许多同名青蛙有什么问题?是的,他们无论如何都不服从……
创作后收集的例子:
缺点
UUID被呈现为超级英雄,怎么会有缺点呢?
我们可以从上面的截图中看到缺点。颜色?
UUID属性的生成值为36个字符长。如果web应用程序打算显示该属性的值,那么这样的值就不太合适、太长而且不可读。因此,如果密钥属性对最终用户隐藏并且仅由计算机处理,则应使用UUID数据类型。
它是如何工作的?当通过viehttppost创建新条目时,OData服务的Java(例如)实现负责生成值。生成步骤和长值这两个方面都可能导致性能缺陷。但只有在大模型和大量数据的情况下。由于SAP云平台后端服务的目标是轻松创建简单的应用程序,信息大数据,因此性能缺陷应该不是一个大问题。
导航
如果我在具有生成的UUID值的关键字段的实体之间有关联,该怎么办?
别担心,没有问题。
你可以试试这个例子:
然后按照导航链接,就像你习惯的那样:
…/服务/产品(1d40bf5e-1c24-4365-af45-38d069b083f2)/linkToCategory
结果和预期一样:
OData协议版本4和2
我们需要花一些关于OData的话,否则你可能会有这个问题…。如果没有辅导你会怎么做…?是的,拜托,我总是有各种各样的问题…正确,就像我一样。
创建API时,OData协议V4的端点会自动激活有几个原因,坚持更新的协议版本是有意义的。
我们点击V4链接并打开元数据文档:
我们可以看到CDS数据类型UUID被翻译成Edm.Guid文件在ODataV4中
很好。
现在我们打开"Pets"集合:
https://…/PETSERVICE/Pets
然后我们要调用一个条目的URL。
如何编写一个读取V4中的URL?
这就像您习惯的那样:将键附加在括号中。
在我们的示例中,当读取服务的单个资源时,URL的组成如下:
https://…/PETSERVICE/Pets(2bc690f8-4cef-4c22-8213-20940e303650)
如您所见,guid写在括号之间,物联网的应用实例,没有单引号有关OData规范的链接,请参阅"链接"部分。
如何在V2中编写读取URL?
只需单击一下,我们就可以激活OData V2端点。
然后尝试执行相同的单次读取:
…/odatav2/DEFAULT/SERVICE/Pets(2bc690f8-4cef-4c22-8213-20940e303650)
这次我们得到一个错误:
未知文本:"[2bc690f8-4cef-4c22-8213-20940e303650]"。
让我们不要试图理解错误消息……让我们假设URL不正确。如何学习如何编写URL好吧,大数据的数据库,看看我的博客请不要推销有关更多信息,请参阅OData规范:转到概述页:https://www.odata.org/documentation/odata-version-2-0/overview/并向下滚动至"6. "基本数据类型"引用:"总结了支持的基本类型集,以及在ODataURI中使用时必须如何表示每个基本类型"
有一个表,您可以从中获得有关Edm.Guid文件代表:同时给出了一个例子:
guid'12345678-aaaa-bbbb-cccc-ddddeeeefff'
注:在odatav2和V4中,组成包含GUID的读取URL是不同的在V4中,只需将guid值放在括号中在V2中,你必须用单引号写下术语"guid"和值
我们能有一个真正的具体例子吗?好的,根据我们的示例,URL必须这样组成:
…/odatav2/DEFAULT/SERVICE/Pets(guid'2bc690f8-4cef-4c22-8213-20940e303650′)
注意:关于我给出的URL示例:你可能已经注意到我删除了;v=1只要API只有一个版本可用,就可以做到这一点
摘要