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

文件存储_数据库恢复数据_价格

小七 141 0

编辑:本主题的第2部分,说明这种方法已经过时。也不要错过阅读第2部分!

在过去的几个月里,大数据可视化平台,我发表了一些关于我们新的移动后端生成器工具的博客,它可以让你创建很好的OData服务。今天,我想向您展示这个强大工具的一个非凡用例。我希望您会发现它有用。

使用REST服务

访问数据的SAPs策略显然是使用OData。该协议提供了许多优点。然而,它并不是无处不在。通常你会偶然发现自己的RESTful服务。我想介绍一种很好的方法,使用移动后端生成器将任意RESTful服务转换为OData服务。

只要您想在移动开发工具包中使用REST服务,就可以使用这种方法,SAP Cloud Platform SDK for iOS或SAP Cloud Platform SDK for Android处于离线模式,您不能仅为您的移动应用程序实现全新的REST服务。

这样做的目的是自上而下地工作,从您希望在设备上看到的OData模型开始,并从中映射公开可用的petstore API招摇.io举个例子。因此,爱返利,我们正在用对petstore API的调用替换通常的数据库调用来检索和修改数据。

方法

我们将创建一个没有DB绑定的OData服务,而不是通常的数据库SQL语句,我们将对petstore API执行实际的REST调用,解析响应,将它们转换为代理类,并让框架处理其余步骤。对于http调用,解析和转换需要提供JAVA编码,而不是OData查询解析和OData服务响应。这为我们节省了大量工作,同时我们还向petstoreapi添加了额外的特性,比如按名称搜索。用OData层包装petstore API,使数据也可用于脱机OData同步。

下面是解决方案的结尾:

完成工作

让我们使用移动服务模板为新的OData服务项目创建一个新项目。这一次,我们指定了"无数据库"选项。

在我的示例中,我选择了Cloud Foundry,因为它非常方便生成服务并简单地将其部署到我的Cloud Foundry试用版。这让我以后也可以很容易地调试我的代码。

如果您已经有了一个模型,并且希望在没有DB工件的情况下生成代码,网络云服务器,那么您可以在中指定"DB":"nodb"。服务属性.json手动

现在,让我们使用移动后端生成器的图形编辑器来定义最终的服务模型:

我建议您熟悉这里的perstore API。它有很好的文档记录,您可以在这里尝试:https://petstore.swagger.io/

生成的CSDL如下:

现在,我们可以根据这个定义生成JAVA服务了

主要的定制点在PetHandler.java文件班级。这个类是生成的框架包的一部分,负责管理传入的OData调用和相应的后端操作之间的定制点。

查询数据

只要在Pet实体上有传入的GET请求,就会调用这个方法(让我们等一下,忽略有关集合和实体的详细信息)。我们这里的任务是将其映射到petstoreapi,以便使用/Pet{KEY}和/Pet/findByStatus检索特定的Pet对象?状态={status}。在这里,我们提前做一些设计决策。阅读服务描述,没有办法通过宠物的name属性来搜索宠物商店,因此在我们的最终OData服务中没有一个简单的方法来实现这一点。实际上,这是可以做到的,但这将是对服务的更高级的修改,在这一点上,在这个方向上增强服务可能没有意义,因为在第一个地方,仅仅获取一个特定的宠物或者根据状态检索一个宠物列表似乎就足够了。我们需要做的决定是决定当呼叫/Pets时,我们最终服务的典型服务呼叫将响应什么。通常,购物返利平台,这应该归还所有可用的宠物。为了实现这一点,我们需要考虑两种方法来实现executeQuery()。

如果提供了key,那么map GET/宠物(钥匙)OData调用swagger API GET/宠物{钥匙}其他用途/宠物/宠物状态?状态=可用、已售出、待定如果$filter包含状态信息,请确保只将这些值传递给petstore api

这是它在代码中的外观:

以下是queryByKey和queryByStatus方法:

处理创建实体的POST请求

当涉及实体创建时,生成的代码提供createEntity方法:

此方法需要有效的ODataPOST命令并应执行以下操作:

将传入请求转换为生成的实体类的Pet对象。验证对象(可选)例如,您可以检查状态值是否在预期值的范围内("可用"、"待定"、"售出")按照petstoreapi的预期将Pet对象转换为JSON表示激发实际的REST调用以使用petstoreapi创建PET解析响应基于响应对象创建Pet对象并覆盖响应中的值这是必需的,因为REST服务使用服务器密钥进行响应,该密钥需要传递回我们服务的OData响应。

更新实体

这与创建非常相似,而在这里您使用PUT将更新的值传递给petstore API。

删除实体

删除是最简单的方法。我认为代码是不言自明的:

您需要的HELPER方法

此方法将pet的JSON表示复制到pet类型的代理类。我对这个类别进行了注释,因为在petstore API中,这个类别似乎没有任何用途。

下一个方法与上面的方法相同,但用于对象数组。

toJSON(Pet-Pet)方法是准备要传输到petstore API的对象。

validate方法是检查提供的值是否对petstore API有效。这些数据验证方法对于确保您的服务正确运行以及是petstore API的适当公民非常重要。

与petstore API通信