Tencent / APIJSON

🏆 实时 零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构 🏆 Real-Time coding-free, powerful and secure ORM 🚀 providing APIs and Docs without coding by Backend, and the returned JSON of API can be customized by Frontend(Client) users
http://apijson.cn
Other
17.27k stars 2.16k forks source link

【CHINA TELECOM 中国电信】【500 强】天翼云申请了 APIJSON 相关发明专利 #662

Open TommyLemon opened 10 months ago

TommyLemon commented 10 months ago

一种OpenAPI调用方法及装置

image image image image image image image image

摘要

本发明公开了一种OpenAPI调用方法及装置,属于低代码开发技术领域,应用于低代码平台,方法包括:构建表单模型及初始化数据;开放一个通用表单查询API接口,通用表单查询API接口用于接收token和requestJson两个参数;接收用户对于通用表单查询API接口的查询请求,其中,通用表单查询API接口的查询请求由用户通过调用获取token的接口生成token信息,并组装requestJson参数生成;验证token的有效性,并识别出用户的用户标识,存储于线程变量;验证用户是否拥有请求的表单编码和字段编码的权限;在用户拥有相应的权限的情况下,将表单编码和字段编码转换为实际数据库的逻辑表名称和逻辑字段名称;APIJSON模块将查询请求解析为对应的sql执行,并按规范输出用户请求的数据。

权利要求

1.一种OpenAPI调用方法,应用于低代码平台,其特征在于,包括: S101:构建表单模型及初始化数据; S102:开放一个通用表单查询API接口,所述通用表单查询API接口用于接收token和requestJson两个参数; S103:接收用户对于所述通用表单查询API接口的查询请求,其中,所述通用表单查询API接口的查询请求由所述用户通过调用获取token的接口生成token信息,并组装requestJson参数生成; S104:验证token的有效性,并识别出所述用户的用户标识,存储于线程变量; S105:验证所述用户是否拥有请求的表单编码和字段编码的权限; S106:在所述用户拥有相应的权限的情况下,将所述表单编码和所述字段编码转换为实际数据库的逻辑表名称和逻辑字段名称; S107:APIJSON模块将所述查询请求解析为对应的sql执行,并按规范输出所述用户请求的数据。 2.根据权利要求1所述的OpenAPI调用方法,其特征在于,所述S101具体包括: S1011:创建表单; 其中,所述表单具有表单编码和字段编码,所述表单编码与实际数据库的逻辑表名称具有关联关系,所述字段编码与实际数据库的逻辑字段名称具有关联关系; S1012:为调用OpenAPI的用户创建appKey和appSecret,作为调用OpenAPI的凭证。 3.根据权利要求1所述的OpenAPI调用方法,其特征在于,token参数由调用获取token的接口生成,requestJson参数遵循APIJSON功能符规范。 4.根据权利要求1所述的OpenAPI调用方法,其特征在于,所述S105具体包括: S1051:在重写APIJSONVerifier的verifyAccess接口时,从ThreadLocal中获取所述用户标识; S1052:根据所述用户标识从用户权限表中判断所述用户是否拥有请求的所述表单编码和所述字段编码的权限,有权限返回true,无权限则返回false。 5.根据权利要求1所述的OpenAPI调用方法,其特征在于,所述S106具体包括: S1061:引入APIJSON-column插件,并重写APIJSONSQLExecutor的getKey; S1062:将所述用户传入的所述表单编码和所述字段编码与系统存储的表单、字段映射表中的数据进行对比,并转换为实际数据库的逻辑表名称和逻辑字段名称。 6.一种OpenAPI调用装置,应用于低代码平台,其特征在于,包括: 构建模块,用于构建表单模型及初始化数据; 开放模块,用于开放一个通用表单查询API接口,所述通用表单查询API接口用于接收token和requestJson两个参数; 接收模块,用于接收用户对于所述通用表单查询API接口的查询请求,其中,所述通用表单查询API接口的查询请求由所述用户通过调用获取token的接口生成token信息,并组装requestJson参数生成; 第一验证模块,用于验证token的有效性,并识别出所述用户的用户标识,存储于线程变量; 第二验证模块,用于验证所述用户是否拥有请求的表单编码和字段编码的权限; 转换模块,用于在所述用户拥有相应的权限的情况下,将所述表单编码和所述字段编码转换为实际数据库的逻辑表名称和逻辑字段名称; 输出模块,用于APIJSON模块将所述查询请求解析为对应的sql执行,并按规范输出所述用户请求的数据。 7.根据权利要求6所述的OpenAPI调用装置,其特征在于,所述构建模块具体用于: 创建表单; 其中,所述表单具有表单编码和字段编码,所述表单编码与实际数据库的逻辑表名称具有关联关系,所述字段编码与实际数据库的逻辑字段名称具有关联关系; 为调用OpenAPI的用户创建appKey和appSecret,作为调用OpenAPI的凭证。 8.根据权利要求6所述的OpenAPI调用装置,其特征在于,token参数由调用获取token的接口生成,requestJson参数遵循APIJSON功能符规范。 9.根据权利要求6所述的OpenAPI调用装置,其特征在于,所述第二验证模块具体用于: 在重写APIJSONVerifier的verifyAccess接口时,从ThreadLocal中获取所述用户标识; 根据所述用户标识从用户权限表中判断所述用户是否拥有请求的所述表单编码和所述字段编码的权限,有权限返回true,无权限则返回false。 10.根据权利要求6所述的OpenAPI调用装置,其特征在于,所述转换模块具体用于: 引入APIJSON-column插件,并重写APIJSONSQLExecutor的getKey; 将所述用户传入的所述表单编码和所述字段编码与系统存储的表单、字段映射表中的数据进行对比,并转换为实际数据库的逻辑表名称和逻辑字段名称。

说明书

技术领域 本发明属于低代码开发技术领域,具体涉及一种OpenAPI调用方法及装置。 背景技术 低代码平台是一款图形化、拖拉拽方式快速实现创建应用、支持用少量代码扩展实现个性化需求的数字技术工具平台。其核心功能之一是提供各种控件,让用户快速生成表单,帮助用户收集和管理数据,其本质是动态地为用户创建数据库的表。有开发能力的租户用户通过低代码平台的OpenAPI,实现自有系统与低代码平台的数据互通,满足各类定制化的需求。 主流的低代码平台通过OpenAPI开放的表单等各类接口中,主要为标准API,允许用户按表单编码及简单的查询条件实现单表单查询、简单过滤、分页查询,该方式欠缺了多表关联、分组、复杂查询条件组合等能力,制约了具有开发能力的用户在低代码平台拓展业务的能力。 为有效提升API的设计和开发效率,CN202210149833.9提出一种低代码的API设计和开发方法,该方法支持通过可视化设计器对处理流程和API进行编排,该方式通过低代码的方式动态创建API,减少了开发工作。但是,该方案需要由用户动态地创建API,不易保障动态创建的多个API的稳定性。 发明内容 本发明实施例的目的是提供一种OpenAPI调用方法及装置,能够解决现有技术中的需要由用户动态地创建API,不易保障动态创建的多个API的稳定性的技术问题。 为了解决上述技术问题,本发明是这样实现的: 第一方面本发明实施例提供了一种OpenAPI调用方法,应用于低代码平台,包括: S101:构建表单模型及初始化数据; S102:开放一个通用表单查询API接口,通用表单查询API接口用于接收token和requestJson两个参数; S103:接收用户对于通用表单查询API接口的查询请求,其中,通用表单查询API接口的查询请求由用户通过调用获取token的接口生成token信息,并组装requestJson参数生成; S104:验证token的有效性,并识别出用户的用户标识,存储于线程变量; S105:验证用户是否拥有请求的表单编码和字段编码的权限; S106:在用户拥有相应的权限的情况下,将表单编码和字段编码转换为实际数据库的逻辑表名称和逻辑字段名称; S107:APIJSON模块将查询请求解析为对应的sql执行,并按规范输出用户请求的数据。 在一种可能的实施方式中,S101具体包括: S1011:创建表单; 其中,表单具有表单编码和字段编码,表单编码与实际数据库的逻辑表名称具有关联关系,字段编码与实际数据库的逻辑字段名称具有关联关系; S1012:为调用OpenAPI的用户创建appKey和appSecret,作为调用OpenAPI的凭证。 在一种可能的实施方式中,token参数由调用获取token的接口生成,requestJson参数遵循APIJSON功能符规范。 在一种可能的实施方式中,S105具体包括: S1051:在重写APIJSONVerifier的verifyAccess接口时,从ThreadLocal中获取用户标识; S1052:根据用户标识从用户权限表中判断用户是否拥有请求的表单编码和字段编码的权限,有权限返回true,无权限则返回false。 在一种可能的实施方式中,S106具体包括: S1061:引入APIJSON-column插件,并重写APIJSONSQLExecutor的getKey; S1062:将用户传入的表单编码和字段编码与系统存储的表单、字段映射表中的数据进行对比,并转换为实际数据库的逻辑表名称和逻辑字段名称。 第二方面本发明实施例提供了一种OpenAPI调用装置,应用于低代码平台,包括: 构建模块,用于构建表单模型及初始化数据; 开放模块,用于开放一个通用表单查询API接口,通用表单查询API接口用于接收token和requestJson两个参数; 接收模块,用于接收用户对于通用表单查询API接口的查询请求,其中,通用表单查询API接口的查询请求由用户通过调用获取token的接口生成token信息,并组装requestJson参数生成; 第一验证模块,用于验证token的有效性,并识别出用户的用户标识,存储于线程变量; 第二验证模块,用于验证用户是否拥有请求的表单编码和字段编码的权限; 转换模块,用于在用户拥有相应的权限的情况下,将表单编码和字段编码转换为实际数据库的逻辑表名称和逻辑字段名称; 输出模块,用于APIJSON模块将查询请求解析为对应的sql执行,并按规范输出用户请求的数据。 在一种可能的实施方式中,构建模块具体用于: 创建表单; 其中,表单具有表单编码和字段编码,表单编码与实际数据库的逻辑表名称具有关联关系,字段编码与实际数据库的逻辑字段名称具有关联关系; 为调用OpenAPI的用户创建appKey和appSecret,作为调用OpenAPI的凭证。 在一种可能的实施方式中,token参数由调用获取token的接口生成,requestJson参数遵循APIJSON功能符规范。 在一种可能的实施方式中,第二验证模块具体用于: 在重写APIJSONVerifier的verifyAccess接口时,从ThreadLocal中获取用户标识; 根据用户标识从用户权限表中判断用户是否拥有请求的表单编码和字段编码的权限,有权限返回true,无权限则返回false。 在一种可能的实施方式中,转换模块具体用于: 引入APIJSON-column插件,并重写APIJSONSQLExecutor的getKey; 将用户传入的表单编码和字段编码与系统存储的表单、字段映射表中的数据进行对比,并转换为实际数据库的逻辑表名称和逻辑字段名称。 本发明至少具有以下有益效果: 在本发明实施例中,在低代码平台中开放一个通用表单查询API接口,接收用户对于通用表单查询API接口的查询请求,之后验证用户是否拥有请求的表单编码和字段编码的权限,当用户拥有权限时,将表单编码和字段编码转换为实际数据库的逻辑表名称和逻辑字段名称,通过APIJSON模块将查询请求解析为对应的sql执行,按规范输出用户请求的数据。(1)无需由用户动态地创建API,开放单个接口更加稳定,更加易于维护,有效保障了API的稳定性。(2)扩展了对于低代码平台表单的复杂条件、关联查询、分组查询等通用查询能力,开放单个接口更稳定、易于维护,有效地满足了有开发能力的用户对接低代码平台的需求。(3)在集成APIJSON时,采用Token的验证机制替代官方的Session存储认证登录方式,拓展了APIJSON的登录验证方法,可以解决接入方为非浏览器,没有Cookie的问题。(4)在重写APIJSON的验证方法时,使用线程变量ThreadLocal存储会话信息,可以不侵入APIJSON的源代码,避免了开源版本兼容性的问题。 附图说明 图1是本发明实施例提供的一种OpenAPI调用方法的流程示意图; 图2是本发明实施例提供的一种OpenAPI调用装置的结构示意图。 本发明目的的实现、功能特点及优点将结合实施例、参照附图做进一步说明。 具体实施方式 为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。 下面结合附图,通过具体的实施例及其应用场景对本发明实施例提供OpenAPI调用方法以及装置进行详细地说明。 实施例一 参照图1,示出了本发明实施例提供的一种OpenAPI调用方法的流程示意图。 首先介绍一下本发明实现的原理:在低代码平台中,通过拖拉拽构建的表单,其本质是数据库的表,因此结合APIJSON能力,在开放表单OpenAPI时,能借助该开源组件开放通用查询接口,增强OpenAPI能力。 本发明实施例提供的一种OpenAPI调用方法,应用于低代码平台,包括: S101:构建表单模型及初始化数据。 在一种可能的实施方式中,S101具体包括子步骤S1011和S1012: S1011:创建表单。 其中,表单具有表单编码和字段编码,表单编码与实际数据库的逻辑表名称具有关联关系,字段编码与实际数据库的逻辑字段名称具有关联关系。 在实际应用的过程中,假设低代码平台创建了学生、年纪两个表单,其定义如下所示: 学生表单,编码为:Form_Student,对应的数据库表为:Db_Student,字段如表1所示: 表1学生表单字段表 [0001] 表单字段编码 数据库字段编码 备注 Form_Id Db_user_id 学生标识 Form_Name Db_name 姓名 Form_Age Db_age 年龄 Form_GradeId Db_grade_id 班级标识 年纪表单,编码为:Form_Grade,对应的数据库表为Db_Grade,字段如表2所示: 表2年级表单字段表 [0002] 表单字段编码 数据库字段编码 备注 Form_GradeId Db_grade_id 年级标识 Form_GradeName Db_grade_name 年纪名称 为用户颁发的凭证范例为: AppKey=wf-1d4d3177dd6cb430aa9ba88ff75453c274655 AppSecret=2bad1f96a029811621a4e50324f0525a。 S1012:为调用OpenAPI的用户创建appKey和appSecret,作为调用OpenAPI的凭证。 S102:开放一个通用表单查询API接口,通用表单查询API接口用于接收token和requestJson两个参数。 其中,token参数由调用获取token的接口生成,requestJson参数遵循APIJSON功能符规范。 其中,通用表单查询API接口的规范如表3所示。 表3通用表单查询API接口规范 S103:接收用户对于通用表单查询API接口的查询请求。 其中,通用表单查询API接口的查询请求由用户通过调用获取token的接口生成token信息,并组装requestJson参数生成。 其中,获取token接口的规范如表4所示。 表4获取token接口规范 在实际应用过程中,查询学生姓名包含“张”的学生表单信息,可以关联查询出年纪表单信息。 S104:验证token的有效性,并识别出用户的用户标识,存储于线程变量。 其中,线程变量可以是java语言的ThreadLocal。 进一步地,此时可以从数据库中获取到appKey对应的appSecret,再次生成signature,通过对比新生成的signature与token中的signature对比,可判断数据是否被篡改。 现有技术中,APIJSON本身包括了APIJSON_user用户表、Access权限表,通过Access表可定义每个角色用于哪些表的访问权限。其权限验证流程为:(1)前端调用APIJSON的登录接口,APIJSON在后端生成Session并存储用户的信息,并将SessionID保存在前端的Cookie;(2)前端调用API的查询接口时,APIJSON根据前端携带的SessionID从Session中获取相关的用户信息。而在低代码平台,本身具有权限体系,且在OpenAPI中,调用方不一定是浏览器,将SessionID保存于前端Cookie的方式并不适合。在本发明中,在集成APIJSON时,采用Token的验证机制替代官方的Session存储认证登录方式,拓展了APIJSON的登录验证方法,可以解决接入方为非浏览器,没有Cookie的问题。 S105:验证用户请求的表单编码和字段编码的权限。 在一种可能的实施方式中,S105具体包括子步骤S1051和S1052: S1051:在重写APIJSONVerifier的verifyAccess接口时,从ThreadLocal中获取用户标识; S1052:根据用户标识从用户权限表中判断用户是否拥有请求的表单编码和字段编码的权限,有权限返回true,无权限则返回false。 S106:在用户拥有相应的权限的情况下,将表单编码和字段编码转换为实际数据库的逻辑表名称和逻辑字段名称。 在一种可能的实施方式中,S106具体包括子步骤S1061和S1062: S1061:引入APIJSON-column插件,并重写APIJSONSQLExecutor的getKey; S1062:将用户传入的表单编码和字段编码与系统存储的表单、字段映射表中的数据进行对比,并转换为实际数据库的逻辑表名称和逻辑字段名称。 S107:APIJSON模块将查询请求解析为对应的sql执行,并按规范输出用户请求的数据。 其中,APIJSON模块可以执行APIJSON开源技术,APIJSON开源技术是一种专为API而生的JSON网络传输协议以及基于这套协议实现的ORM库。APIJSON提供了一套JSON格式的功能符规范标准,约定了操作数据库的JSON规范,包括:组合查询,关联、条件匹配等各种过滤、分页、子查询、逻辑运算规则等,可根据JSON规范生成SQL、防止SQL注入,执行并返回请求约定的格式。 本发明至少具有以下有益效果: 在本发明实施例中,在低代码平台中开放一个通用表单查询API接口,接收用户对于通用表单查询API接口的查询请求,之后验证用户是否拥有请求的表单编码和字段编码的权限,当用户拥有权限时,将表单编码和字段编码转换为实际数据库的逻辑表名称和逻辑字段名称,通过APIJSON模块将查询请求解析为对应的sql执行,按规范输出用户请求的数据。(1)无需由用户动态地创建API,开放单个接口更加稳定,更加易于维护,有效保障了API的稳定性。(2)扩展了对于低代码平台表单的复杂条件、关联查询、分组查询等通用查询能力,开放单个接口更稳定、易于维护,有效地满足了有开发能力的用户对接低代码平台的需求。(3)在集成APIJSON时,采用Token的验证机制替代官方的Session存储认证登录方式,拓展了APIJSON的登录验证方法,可以解决接入方为非浏览器,没有Cookie的问题。(4)在重写APIJSON的验证方法时,使用线程变量ThreadLocal存储会话信息,可以不侵入APIJSON的源代码,避免了开源版本兼容性的问题。 实施例二 参照图2,示出了本发明实施例提供的一种OpenAPI调用装置的结构示意图。 本发明实施例提供了一种OpenAPI调用装置20,应用于低代码平台,包括: 构建模块201,用于构建表单模型及初始化数据; 开放模块202,用于开放一个通用表单查询API接口,通用表单查询API接口用于接收token和requestJson两个参数; 接收模块203,用于接收用户对于通用表单查询API接口的查询请求,其中,通用表单查询API接口的查询请求由用户通过调用获取token的接口生成token信息,并组装requestJson参数生成; 第一验证模块204,用于验证token的有效性,并识别出用户的用户标识,存储于线程变量; 第二验证模块205,用于验证用户请求的表单编码和字段编码的权限; 转换模块206,用于在用户拥有相应的权限的情况下,将表单编码和字段编码转换为实际数据库的逻辑表名称和逻辑字段名称; 输出模块207,用于APIJSON模块将查询请求解析为对应的sql执行,并按规范输出用户请求的数据。 在一种可能的实施方式中,构建模块201具体用于: 创建表单; 其中,表单具有表单编码和字段编码,表单编码与实际数据库的逻辑表名称具有关联关系,字段编码与实际数据库的逻辑字段名称具有关联关系; 为调用OpenAPI的用户创建appKey和appSecret,作为调用OpenAPI的凭证。 在一种可能的实施方式中,token参数由调用获取token的接口生成,requestJson参数遵循APIJSON功能符规范。 在一种可能的实施方式中,第二验证模块205具体用于: 在重写APIJSONVerifier的verifyAccess接口时,从ThreadLocal中获取用户标识; 根据用户标识从用户权限表中判断用户是否拥有请求的表单编码和字段编码的权限,有权限返回true,无权限则返回false。 在一种可能的实施方式中,转换模块206具体用于: 引入APIJSON-column插件,并重写APIJSONSQLExecutor的getKey; 将用户传入的表单编码和字段编码与系统存储的表单、字段映射表中的数据进行对比,并转换为实际数据库的逻辑表名称和逻辑字段名称。 本发明至少具有以下有益效果: 在本发明实施例中,在低代码平台中开放一个通用表单查询API接口,接收用户对于通用表单查询API接口的查询请求,之后验证用户是否拥有请求的表单编码和字段编码的权限,当用户拥有权限时,将表单编码和字段编码转换为实际数据库的逻辑表名称和逻辑字段名称,通过APIJSON模块将查询请求解析为对应的sql执行,按规范输出用户请求的数据。(1)无需由用户动态地创建API,开放单个接口更加稳定,更加易于维护,有效保障了API的稳定性。(2)扩展了对于低代码平台表单的复杂条件、关联查询、分组查询等通用查询能力,开放单个接口更稳定、易于维护,有效地满足了有开发能力的用户对接低代码平台的需求。(3)在集成APIJSON时,采用Token的验证机制替代官方的Session存储认证登录方式,拓展了APIJSON的登录验证方法,可以解决接入方为非浏览器,没有Cookie的问题。(4)在重写APIJSON的验证方法时,使用线程变量ThreadLocal存储会话信息,可以不侵入APIJSON的源代码,避免了开源版本兼容性的问题。 本发明实施例提供的OpenAPI调用装置,可以实现上述数据验证方法的各个步骤和效果。为避免重复,在此不再重复。 本发明提供的虚拟装置可以是装置,也可以是终端中的部件、集成电路、或芯片。 以上仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。