您好,
今天是一个很好的一天,可以发挥创意,为我们的OData服务添加创意功能。
这里有新的吗?那么请点击这里来了解它的全部内容。
我们将用Java创建一个ODataV4服务。我们将使用SAP云平台SDK进行服务开发。
这里有一个介绍,这里有一系列博客的概述。
实现创建操作。
实现更新操作。
实现删除操作。
关于项目创建的详细信息,您可以参阅本博客,关于前提条件
这个博客不需要增强模型。模型保持不变,它有一个实体类型和一个实体集。我们要增强的是:我们的服务提供的功能。换句话说:与数据交互的可能性。根据模型中的定义构造数据。有一个人,甚至人,我们想得到名单,或者一个人,我们想修改一个人的属性,我们想创建和删除一个人。
听起来太多了?
不是……
我认为包括这两个已经实现的方法是有意义的,只是为了在最后进行更好的测试。
与之前的博客有一些小的区别:我们需要将虚拟数据库存储为静态成员,因为我们希望创建一个条目,然后再访问它。对于这个博客,我已经从READ实现中删除了错误处理,以缩短整个代码。
请参阅本页的末尾查看完整的源代码
以便创建一个条目,我们服务的用户必须向实体集URL:
https://发出POST请求。cfapps.sap.hana文件.ondemand.com/odata/v4/DemoService/People
岗位请求需要包含请求主体。请求主体需要包含要创建的条目的数据。此外,POST请求需要指定一个头,以通知服务器数据的格式。我们稍后将谈到这一部分
我已经提到,用户在POST请求的主体中发送新"Person"的数据。在那里,它将是json格式的。
但是它将如何到达我们,服务实现者,在我们的代码中?由于您已经熟悉SDK,您希望我们可以向request参数的实例询问该信息。您还希望数据的格式与我们在READ实现中提供的数据格式完全相同。
是的,您是正确的:
一旦我们将数据作为映射,我们就可以从映射中提取值。别忘了,我们必须指定正确的属性名称。同样,我们知道定义的数据类型,所以我们可以安全地进行适当的转换。
然后,我们使用从请求主体中提取的实际值在数据库中进行实际创建。
在我们的示例中,我们只调用一个小助手方法"createPerson"。它将创建一个存储在静态成员变量中的新条目(参见本博客末尾的完整代码)
最后,创建响应对象:
正如您所期望的,框架负责构建响应,e、 g.发送正确的状态码。
完整的方法实现:
让我们继续。
我们将在最后测试所有操作。
如果用户想要修改现有数据,即更新一个现有条目,那么他会向我们的OData服务发送一个PUT(或修补)请求(这对于RESTful服务来说很常见)。URL指向需要修改的单个资源:
例如https://。cfapps.sap.hana文件.ondemand.com/odata/v4/DemoService/People(2)
PUT请求有一个请求主体,包含要更改的数据。还有标题,告诉内容的格式(是json还是xml)
实现步骤类似:
1)从请求中获取所需信息:
首先我们需要知道应该修改哪个条目。此信息是请求URL的一部分:
然后我们需要知道哪些数据应该修改。这个信息在请求主体中:
2)修改数据库中的实际数据
首先我们需要从数据库中提取这个人,基于我们已经从URI中提取的id:
然后我们要做修改,基于请求主体,我们有地图
这样,我们只替换人名:
3)配置响应
从规范中我们知道,联网,PUT请求在响应中没有数据(通常),状态码是204(没有内容)。因此,我们不需要向响应对象传递任何数据。
完整的代码:
在这种情况下,用户发送删除请求,URL指向需要删除的单个资源
例如https://。cfapps.sap.hana文件.ondemand.com/odata/v4/DemoService/People(2)
没有其他。
代码没有错误处理,没有进一步解释:
构建和部署后,打开您喜欢的浏览器…对不起,我错了。这次我们需要一个REST客户端,因为对于CREATE,我们不仅需要指定URL,还需要指定请求主体和请求头。
REST客户端的示例可以是"Postman",但是可以使用任何其他工具。
所以让我重新开始:
在构建和部署之后,物联网展会,打开您首选的REST客户端。
测试创建
1)调用查询操作
例如https://。cfapps.sap.hana文件.ondemand.com/odata/v4/DemoService/People
2)选择一个条目进行阅读
例如https://。cfapps.sap.hana文件.ondemand.com/odata/v4/DemoService/People(2)
3)现在,将单个条目的json内容复制到剪贴板:
4)将REST客户端的HTTP谓词更改为POST并更改URL,使其指向实体集(如用于查询)E、 g.https://。cfapps.sap.hana文件.ondemand.com/odata/v4/DemoService/People
5)进入请求主体:单击"正文"选项卡以粘贴剪贴板的内容拆下@odata.context文件线更改值,使其成为新的
例如
6)输入请求头:
,因为我们粘贴到请求正文字段的内容是json格式的如果我们使用xml作为格式,那么我们必须相应地更改内容类型
7)运行这就是配置请求的方法。现在按"发送"按钮执行请求。
作为响应,您将得到新创建的条目(就像在请求正文中指定的一样)和状态代码201
成功!!!!
下面的截图充满了红色标记,意味着包含了很多有趣的细节: