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

MySQL数据库_服务器和虚拟主机有什么区别_新用户

小七 141 0

这篇由两部分组成的文章将讨论我们需要了解的有关SAP ABAP中GraphQL实现的细节。它是如何诞生的,它提供了什么,以及如何使用它。由于这是我的第一篇博文,而且我不是ABAP或GraphQL方面的专家,这篇文章可能包含一些错误。另外,本文的目的不是比较REST或OData与GraphQL。

如果您想跳过技术细节,请参阅第2部分。

因为我正在寻找更好的方法,通过api公开SAP中的现有数据,这有助于降低开发和维护时间。我尝试了几种方法来从SAP生成API。

之前的ICF服务使用ABAP到JSON转换实用程序(自定义)类公开数据。这是可以使用SICF从SAP公开的api的最低实现。它相当于NodeJS世界中的Express Server.

虽然ICF服务非常强大,可以完全控制通过响应发送的内容,但我继续寻找更好的选择。

我还与NodeJS合作开发Web应用程序和服务器端api,自从Facebook将GraphQL公之于众以来,我一直在关注它的早期阶段,我非常着迷于GraphQL标准化我们后端关系数据访问的方式。

尽管本文并不是对GraphQL的介绍,我只想谈谈它带来的一些特点https://graphql.org,描述您的数据,简单地说,询问您想要什么并获得可预测的结果提供了关于GraphQL的所有知识。

我喜欢GraphQL的优点之一是能够遍历数据模型的关系。它为请求数据的客户提供了超级能力,建站服务,并完全负责。这在多平台世界中是有意义的,移动应用程序可以选择从同一个API端点获取较少的数据,租用服务器,而不是具有更多屏幕区域的Web应用程序相同域数据的风格。由于GraphQL在单个端点下提供查询(Read)、突变(Create、Update和Delete)和订阅(Real-timeupdates),因此扩展和维护要简单得多。GraphQL没有对API进行版本控制,而是提供了将字段标记为折旧以及原因的功能。添加新字段不会影响现有的API,除非客户端请求它。

GraphQL类型系统将默认提供文档,以便使用者清楚地知道从服务器请求和期望返回的内容。

随着GraphQL的普及,它周围的工具和库也在增加。GraphQL社区非常棒,云服务器服务,可以在网上找到大量的资源来学习它。

GraphiQL工具是一个用来与GraphQL服务器交互的工具,它有多种风格来提高可用性。GraphiQL提供了查询的自动完成,如何成为淘客,并显示了来自服务器的文档。Apollo和Relay库提供了易于将GraphQL集成到开发工作流中的功能

我想在这里也提到SAP CRM模块,因为我的最终目标是将CRM客户数据作为API公开。CRM将功能划分为业务伙伴和一个订单,在BOL(业务对象层)/GenIL(通用交互层)的帮助下,精准大数据,该订单已经公开给CRM用户界面。我的想法是利用已经工作了几年的东西,并将其扩展为一个graphqlapi。

如果我们仔细观察,BOL/GenIL与GraphQL有几个相似之处。

BOL定义了高级搜索实体,可以与GraphQL中的查询类型相关联查询参数可以转换为参数根实体/结果实体可以与自定义类型相关实体的每个属性都可以作为类型字段公开每个结果关系都可以看作是相关的/子类型,并且可以通过GenIL的getrelatedentie(s)函数调用来解析每个BOL字段的数据元素值或值表可以转换为Enum最后但并非最不重要的是,GenIL Create Entity、Update Entity和Delete Entity可以映射到突变

这种从BOL/GenIL映射到GraphQL的视图迫使我投入更多的时间构建GraphQL服务器,作为一个统一的接口暴露到SAP CRM中。

最初,我已经开始在NodeJS中实现GraphQL,并将自定义REST端点调用到SAP中。尽管这种方法允许我建立一个初步的概念证明。我不相信仅仅在GraphQL NodeJS实现之后调用REST端点并在SAP之外应用过滤器是一项巨大的任务,我们不能充分利用BOL/GenIL的特性。我觉得这只是一个暴露SAP数据的黑客行为。

我已经开始研究ABAP中的GraphQL实现,但在我自己开始构建GraphQL时(2018年1月左右),却没有找到一个。在ABAP中构建GraphQL服务器时,我参考了Java实现的代码。在将Java代码移植到ABAP时,需要做很多调整和牺牲,因为ABAP OOPs略有不同,我需要去掉线程,因为据我所知,我们的SAP ICM(Internet Communication Manager)将在请求级别为我们管理这一点。也改变了实现,从表中加载配置,而不是像在其他语言中那样从模式文件中加载配置。

一旦GraphQL服务器在ABAP中构建并就绪,就可以很容易地将BOL/GenIL作为从SAP CRM中已有的配置表中读取的内容向服务器公开。