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

域名解析_cdn搭建_返现

小七 141 0

随着GraphQL ABAP初始版本的成功实现和对多个API的使用分析,尽管这些API可以轻松构建和使用,我迫切希望用一种更简单、标准化的方法来提高开发API的效率。

我已经开始在空闲时间研究GraphQL ABAP实现的下一个版本,我将在这篇博文中介绍第一手资料,希望您能提出建议和意见。

请查看我之前关于GraphQL ABAP实现的博客文章,以获得一些背景知识。

GraphQL+SAP ABAP:灵感

GraphQL+SAP ABAP:架构和技术细节

想法和改进:

GraphQL架构但图表在哪里?我们如何将它公开的数据模型可视化?模式开发使用ABAP代码定义模式需要大量的工作,而且容易出错如何使模式定义过程标准化如何减少管理跨系统可用模式的工作量如何以最小的努力有效地重用现有的业务逻辑如何快速地从模式转换到API

基于以上这些想法,我开始设计一个GraphQL管理(Web应用程序),微信淘客,它的特点是:

用一个简单而令人耳目一新的界面维护系统中所有可用的模式列出架构创建/编辑/删除模式使用GraphQL的模式定义语言(SDL)不要使用分散在类中的重复ABAP代码来创建模式,而是为整个模式提供一个就地编辑器而不是只通过ID解析为解析器提供更多上下文,以便能够通过模式感知提高效率解析ABAP可执行代码,如函数模块和类使用指令定义GraphQL和ABAP之间的映射

让我们用几个屏幕截图来深入研究Web应用程序的特性,而不是我枯燥的理论。

仪表板(现在是空的)可以用来显示统计信息,如可用的模式数、每个模式的请求数、每小时的活动呼叫数和关键消息等…Schemas菜单选项:用于对模式执行CRUD操作创建新架构在SAP

中使用唯一的模式ID、描述和模式的SICF路径在SAP中创建相关的SICF节点,只使用ZGQLCL\U API\U SERVICE\U BASE作为模式的超类

列表每个tile的操作依次包含Edit Schema Header、Delete和Visual Editor

创建的新Schema将存储到SAP表中有趣的事实:这个应用程序的API也运行在GraphQL ABAP实现上,并使用这个Web应用程序进行维护,在上面的屏幕截图中可以看到GQLèu ADMIN tile

使用GraphQL编辑器可视化/更新模式使用GraphQL编辑器向新模式中添加新功能

注意:感谢GraphQL编辑器开源库,它用于编辑GraphQL ABAP实现生成的模式SAP将生成GraphQL编辑器所需的SDLWebAPP将从SAP中提取这个SDL,并使用GraphQL编辑器库进行渲染在WebAPP中完成编辑后,Saving将更新的SDL转换为SAP的config表请访问GraphQL编辑器站点,看看在线编辑图形的想法有多酷左侧的图标菜单带有GraphQL编辑器库标准操作,用于在模式中搜索底部有额外的自定义保存图标,用于将更新的架构保存到SAP中顶部栏用于在GraphQL编辑器带架构列表的仪表板创建新架构导入ABAP DDIC对象左边的编辑器窗格是SDL语法高亮显示的文本编辑器,它将呈现ABAP服务器生成的SDL右面板是给定SDL的图形的可视化表示,它还允许直观地添加、删除、更新图中的节点滚动、平移和放大图形最后,GraphQL Playground工具用于对ABAP服务器执行/测试GraphQL查询,行业大数据分析,显示创建的初始模式

注意:显示Web应用程序和GraphQL Playground的url"http://localhost"由于这些服务器在本地运行代理服务器,以连接到本地SAP Netweaver 7.52实例,因此对开发人员免费分发,非常感谢SAP提供相同的

指令这是我从PostGraphile库中欣赏到的另一个想法,它展示了如何高效地使用指令来桥接数据模型和GraphQL语言之间的操作我尝试为GraphQL ABAP实现实现相同的功能,以集成和调用SAP中现有的可执行业务逻辑我将指令视为在设计时或执行时为模式的不同元素(例如字段、类型、枚举)提供附加信息的一种方式以下基本指令被定义为GraphQL ABAP实现中的标准指令@阿巴普名用于将GraphQL名称映射到SAP名称@abapValue公司用于将GraphQL枚举值映射到SAP域值@分解器支持传统的按ID解析程序功能使用接口ZGQLIF\u CUSTOM\u指令的简单实现,可以定义其他指令并将其添加到模式生成器中@功能模块使用GraphQL数据执行ABAP函数模块@班级使用GraphQL数据执行ABAP类和方法导入功能可用于为这些指令生成基本SDL,以添加到编辑器并根据需要进行调整

使用模式编辑器定义GraphQL模式使用简单导入功能模块向模式中添加操作函数或类导入将为主操作生成简单的SDL并支持SDL类型,输入基于ABAP的导入和导出。这允许我们根据需要定义或定制,而不是由框架自己决定,这对于不断变化的API契约来说是远远不够的导入支持基本数据类型、结构和表类型不支持Ref To类型的FM,因为我们不能通过API发送引用

下面我们可以看到一个操作zgqlfmTestStringRes被添加到查询类型通过@functionModule指令和属性"name"和FM name执行解析器

保存模式后执行上述查询

我们可以将生成的模式字段的名称从"zgqlfmTestStringRes"修改为"fetchStringResource",这对函数

的执行没有影响,但是为了改变字段名生成时,我们需要使用@abapName指令映射到原始SAP参数名,ex"evStr"export参数重命名为"sampleString"

这里是SAP的实际功能模块,看起来像

让我们尝试改变逻辑,从EV\u STR返回带有时间戳的动态值

Import还支持类方法导入,但限制很少不支持具有必需参数的类构造函数静态和公共实例方法仅作为GraphQL操作导出一个类的示例导入结果SDL为

上面的导入器提供了模式中下面示例类