云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

微软云_嘉峪关市建设局网站_高性能

小七 141 0

在上一篇博客中,南京大数据,我们学习了如何基于SAP云平台SDK进行服务开发,在OData V4服务中定义和实现两个实体之间的导航在我们的例子中,我们可以从一个人导航到他的工作一对多导航:在我们的示例中,我们可以从一个作业导航到所有拥有此作业的人员。

在当前的博客中,我们将添加更多的用例:

单个实体的一对多导航和访问:在我们的例子中,我们从一个工作导航到另一个人,但不是所有的人:我们只阅读其中一个在导航上创建:是的,可以在指向导航属性的URL上触发创建请求系统查询选项:导航到集合时,可以应用$top之类的查询选项$扩展:fwk以一种通用的方式支持$expand,在我们已经完成的基础上不需要额外的代码。

您可能已经注意到,这个博客是我们为使用SAP云平台SDK进行服务开发的初学者提供的系列博客的一部分(请参阅此处了解更多信息)

关于OData和edmx没有什么新的内容。不过,实现中的一些附加方面在这里是新的,这并不奇怪使用该服务时的一些用例,也不会让您感到惊讶

前提条件:请参阅此处

请参阅此处了解如何创建项目。

我们可以重用上一篇博客中使用的相同edmx文件。无需更改

首先,我们可以重用上一篇博客中使用的相同java文件。我们以后会加强的。好的,我让你复制文件,同时我会等待…

…复制…

好的,既然你已经复制了java文件,让我们添加所需的代码。

这在导航中有点特殊。正如您所意识到的,当从一个工作导航到指定的人员时,云服务器好吗,我们最终会出现在一个列表中。这是一张单子。我是认真的:这是一张单子。即使列表是空列表或只包含一个条目的列表…它仍然是一个列表,因为我们已经这样建模了。所以,如果它真的是一个列表…为什么不处理列表中的一个条目呢?就像我们正常阅读一样?

让我们看一下我们的例子:

我们可以为一个人做一个读取:

https:///odata/v4/DemoService/People(2)

现在,我们也可以为跟随导航时得到的人员列表做一个读取。换言之:有一个名单上的人都有相同的工作。现在我们只想读这个列表中的一个人。

URL如下:

https:///odata/v4/DemoService/Jobs(1)/Employees(2)

这是什么意思?

实现部分与之前的博客相同:Job->People注释看起来非常相似,唯一的区别是@Read而不是@Query

第一步:我们首先需要获得拥有所选工作的人员的列表。

第二步:从URL获得被请求的人员。

第一步之后,我们有一个拥有该工作的人员的列表。然后我们想看看这个清单。在我们阅读之前,我们必须知道我们要读的是谁。它在URL中。我们得到的信息就像在一个正常的阅读:

第3步:找到被请求的人

这是有被请求的工作的人的名单,我们通过导航访问这个名单一旦我们找到它,我们可以返回它。

第四步:小错误处理

如果用户指定了一个有效但不是真的密钥怎么办?抱歉,这个晦涩的短语…

我的意思是:我们知道这个人存在,我们可以为它做一个读取:

…/DemoService/People(4)

如果我们使用导航+读取:

…/DemoService/Jobs(2)/Employees(4)

我们得到相同的人,所以如果我们调用:

…/DemoService/Jobs(1)/Employees(4)

我们指向一个现有的人,但是,这个调用必须失败,因为这个人没有工作(1)如果上一步中的循环没有找到一个人,那么这就是我们假设的错误因此,最后我们可以返回这样的错误响应:

规范说明了实体的创建:

对于我们这些必须实现此要求的人来说,这意味着:实现一个CREATE操作,把源实体考虑进去,

换言之:

对于注解,我们已经使用了两次如下注解属性:

@Query(serviceName="DemoService",大淘客网,entity="People",sourceEntity="Jobs")

@Read(serviceName="DemoService",entity="People",sourceEntity="Jobs")

现在同样,属性是相同的,我们只需更改操作:

@Create(serviceName="DemoService",entity="People",sourceEntity="Jobs")

换言之:

一对多导航最终进入一个集合e、 g.

https:///odata/v4/DemoService/Jobs(2)/Employees

如您所知,当触发"正常"POST请求时,通常针对集合触发…那为什么不用这个收藏呢?

导航属性上的CREATE代码与普通CREATE几乎相同。区别在于:"普通"创建使用请求主体作为输入此"特殊"创建使用请求主体,但也使用URL作为输入

更具体。

URL显示我们创建了一个"人员"(因为"雇员"的类型为"人员")

https:///odata/v4/DemoService/Jobs(2)/Employees

创建"人员"时,我们需要以下属性来填充数据:

当执行"正常"创建时,这些属性在请求负载中指定(我们在以前的博客中已经这样做了)

例如

但是,云估价,如果是在导航属性上创建,我们在URL中已经有了"JobId"的值,它是一个2:

https:///odata/v4/DemoService/Jobs(2)/Employees