CN110825388B - 一种将sql语句直接转换为对应rest接口的方法 - Google Patents

一种将sql语句直接转换为对应rest接口的方法 Download PDF

Info

Publication number
CN110825388B
CN110825388B CN201911121070.1A CN201911121070A CN110825388B CN 110825388 B CN110825388 B CN 110825388B CN 201911121070 A CN201911121070 A CN 201911121070A CN 110825388 B CN110825388 B CN 110825388B
Authority
CN
China
Prior art keywords
interface
information
database
rest
sql
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911121070.1A
Other languages
English (en)
Other versions
CN110825388A (zh
Inventor
冯凯
陈本康
王元卓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Science And Technology Big Data Research Institute
Original Assignee
China Science And Technology Big Data Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Science And Technology Big Data Research Institute filed Critical China Science And Technology Big Data Research Institute
Priority to CN201911121070.1A priority Critical patent/CN110825388B/zh
Publication of CN110825388A publication Critical patent/CN110825388A/zh
Application granted granted Critical
Publication of CN110825388B publication Critical patent/CN110825388B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code

Abstract

本发明提供了一种将SQL语句直接转换为对应REST接口的方法,可以通过简单的配置直接将数据库中的数据暴露成REST风格的Web接口,并将数据库的CRUD操作和REST服务的GET,DELETE,POST,PUT接口对应起来。解决了服务器端的REST服务在应对具体业务系统以及和数据库交互时存在的效率低下、重复编码等问题,极大程度的提高了各种业务系统的开发速度。本发明提供REST接口服务后,用户可通过web页面查看每个接口的调用方式,包括调用url、输入参数和输出参数,也可以调用接口查看返回数据。使用方便,充分利用数据库中的数据资源,能够高效实现大量的数据库操作。

Description

一种将SQL语句直接转换为对应REST接口的方法
技术领域
本发明属于数据库、生成REST接口领域,具体涉及将SQL语句直接转换为对应REST接口的技术。
背景技术
随着Web 2.0的发展,REST(Representational State Transfer)风格的 WebService 得到普遍的应用,各种REST框架如雨后春笋般发展起来。但是在具体的工程实践中,发现服务器端的REST服务在应对各种各样的业务系统以及数据库的交互时还存在很大问题,比如重复编码,效率低下等。
通常来讲实现一个Restful微服务接口需要做以下相关工作:ORM映射:通常使用MyBatis,需要写POJO类、Mapper类、SQLProvider类。服务层实现:需要一个对象管理接口与一个对象管理实现类。控制层实现:一个RestConfoller类并注解Rest方法再调用服务层实现。这样一个Rest接口实现下来至少需要5个以上的类,大部分工作是在做转换、校验等语言相关的工作。这样无论如何都不能避免需要很多逻辑重复的编码,或者要实现大量的数据库操作,既然REST将服务看成是资源的服务,那么可以认为数据库中的数据也是一种资源,目前现有技术中在处理相应转换过程存在效率低导致大量数据库资源使用成本高或导致资源浪费。
发明内容
本发明提供了一种直接将SQL语句转化为对应REST接口的方法,直接将数据库中的具体数据暴露为前端可利用的资源,大大减少了后端冗余代码,极大提高了开发效率。
为了实现上述发明目的,设计了一种将SQL语句直接转换为对应REST接口的方法,包括如下步骤。
步骤1:系统初始化:首先根据配置文件初始化数据库连接池,然后创建记录REST接口信息的表table_service以及记录库中所有表详细信息的表table_infomation,从配置文件加载数据库连接相关信息以及创建记录表的详细信息表table_infomation与服务基本信息表table_service的SQL语句,获取到数据库连接池后,执行创建表的SQL语句,最后启动一个定时任务,定期扫描对应数据库中用户创建的与业务逻辑相关的每个表的详细信息,同时将得到的表的详细信息持久化到table_information同时便于快速访问会缓存下来。启动定时任务时,该任务的逻辑是首先从table_information表读取所有数据加载到缓存队列,然后周期性的扫描该库下面所有表的详细信息,如果有新的表,将信息添加到table_information的同时更新缓存队列;前端数据库表详情页面,直接从缓存获取数据,该数据主要是辅助用户编写SQL语句。表的详细信息数据会展示到前端,便于用户编写sql语句。
步骤2:创建REST 接口方法:用户通过前端web界面填写接口基本信息,编写相关的SQL语句,测试通过后生成相应的REST 接口。编写SQL的规则是where子句里的参数值使用$参数名的方式代替,在SQL编辑框完成SQL编写后,会自动提取出入参的相关参数,然后填写对应的参数值以及配置该参数是否必填后,点击测试,后端系统校验相关参数后若校验成功则保存数据到table_service中,返回测试成功表示接口创建成功,如果返回测试失败会返回具体的失败信息供使用者修改SQL。
步骤3:提供REST接口服务方法:提供所有可用接口的详情,用户通过web页面查看每个接口的调用方式,包括调用url、输入参数和输出参数,或者调用接口查看返回数据。
进一步地,步骤3中调用接口后,后端系统首先根据URL拦截获取服务名称,然后查询table_service表获取该接口的相关配置信息,然后根据接口的访问方式获取传过来的参数信息,根据参数配置信息与获取的参数信息先验证必填参数是否为空,如果为空返回错误信息,如果不为空,在校验非必填参数中是否有空值,如果有空值将SQL语句中该参数的过滤条件去掉。全部校验完成后,将对应的参数值替换到SQL对应的位置,执行SQL语句,获取返回的值,将返回值封装后返回调用者。
步骤1中,所述的数据库中的每个表的详细信息包括表名称和表中每个字段的名称以及字段对应的数据类型。
步骤1中启动定时任务时,该任务的逻辑是首先从table_information表读取所有数据加载到缓存队列,然后周期性的扫描该库下面所有表的详细信息,如果有新的表,将信息添加到table_information的同时更新缓存队列。
步骤2中前端web界面的数据库表详情页面,直接从缓存获取数据。
步骤2中创建REST 接口的过程中,用户在创建REST接口页面并填写接口的基本信息包括接口名称,接口描述,选择接口访问方式GET、POST、PUT或者DELETE。
步骤2中编写SQL的规则是wheher子句里的参数值使用$参数名的方式代替,在SQL编辑框完成SQL编写后,会自动提取出入参的相关参数,然后填写对应的参数值以及配置该参数是否必填后,点击测试,后端系统校验相关参数后若校验成功则保存数据到table_service中,返回测试成功表示接口创建成功,如果返回测试失败会返回具体的失败信息供使用者修改SQL。
步骤3中提供REST接口过程中,用户在接口详情页面查看所有接口的具体调用方式,还包括接口地址,接口方法,接口参数,调用示例。
本发明的有益效果:本发明提供的一种将SQL语句直接转换为对应REST接口的方法中包括设计了系统初始化方法、创建REST 接口方法和查询REST接口详情方法,能避免很多逻辑重复的编码,可以通过简单配置直接将数据库中的数据暴露成 REST 风格的 Web服务,并将数据库的CRUD操作和REST 服务的 GET, DELETE, POST, PUT 接口对应起来。直接将数据库中的具体数据暴露为前端可利用的资源,大大减少了后端冗余代码,极大提高了开发效率。
本发明创建REST 接口后,使用户通过前端web界面填写接口基本信息,编写相关的SQL语句,以及生成相应的REST 接口。本发明提供REST接口服务后,用户可通过web页面查看每个接口的调用方式,包括调用url、输入参数和输出参数,也可以调用接口查看返回数据。使用方便,充分利用数据库中的数据资源,能够高效实现大量的数据库操作。
附图说明
图1 是本发明的系统架构图。
图2 是本发明初始化方法流程图。
图3 是本发明创建接口方法流程图。
图4 是本发明提供服务接口方法流程图。
具体实施方式
实施例1:随着Web 2.0的发展,前后端分离的开发方式成为主流,各种业务系统的开发需要各种后端REST接口支持,传统REST开发框架存在冗余编码,效率低下等问题。本实施例实现了一种将SQL语句直接转换成REST接口的方法,涉及到前端、web后端、数据库相关技术,系统整体的架构图参见图1。
系统初始化方法的实施方式如图2。系统启动,从配置文件加载数据库连接相关信息以及创建记录表的详细信息表table_infomation与服务基本信息表table_service的SQL语句,获取到数据库连接池后,执行创建表的SQL语句,然后启动一个定时任务,该任务的逻辑是首先从table_information表读取所有数据加载到缓存队列,然后周期性的扫描该库下面所有表的详细信息,如果有新的表,将信息添加到table_information的同时更新缓存队列。前端数据库表详情页面,直接从缓存获取数据,该数据主要是辅助用户编写SQL语句。
创建REST 接口实施方式如图3。用户在创建REST接口页面,填写接口的基本信息,包括接口名称,接口描述,选择接口访问方式GET、POST、PUT或者DELETE,然后编写SQL,编写SQL的规则是where子句里的参数值使用$参数名的方式代替,在SQL编辑框完成SQL编写后,会自动提取出入参的相关参数,然后填写对应的参数值以及配置该参数是否必填后,点击测试,后端系统校验相关参数后若校验成功则保存数据到table_service中,返回测试成功表示接口创建成功,如果返回测试失败会返回具体的失败信息供使用者修改SQL。
提供REST接口服务实施方式如图4。用户可在接口详情页面查看所有接口的具体调用方式,包括接口地址,接口方法,接口参数,调用示例。调用接口后,后端系统首先根据URL拦截获取服务名称,然后查询table_service表获取该接口的相关配置信息,然后根据接口的访问方式获取传过来的参数信息,根据参数配置信息与获取的参数信息先验证必填参数是否为空,如果为空返回错误信息,如果不为空,在校验非必填参数中是否有空值,如果有空值将SQL语句中该参数的过滤条件去掉。全部校验完成后,将对应的参数值替换到SQL对应的位置,执行SQL语句,获取返回的值,将返回值封装后返回调用者。
实施例2:一种将SQL语句直接转换为对应REST接口的方法,包括如下步骤。
步骤1:系统初始化:首先根据配置文件初始化数据库连接池,然后创建记录REST接口信息的表table_service以及记录库中所有表详细信息的表table_infomation,最后启动一个定时任务,定期扫描对应数据库中用户创建的与业务逻辑相关的每个表的详细信息,同时将得到的表的详细信息持久化到table_information同时便于快速访问会缓存下来。表的详细信息数据会展示到前端,便于用户编写sql语句。
所述的数据库中的每个表的详细信息包括表名称和表中每个字段的名称以及字段对应的数据类型。
启动定时任务时,该任务的逻辑是首先从table_information表读取所有数据加载到缓存队列,然后周期性的扫描该库下面所有表的详细信息,如果有新的表,将信息添加到table_information的同时更新缓存队列。
步骤2:创建REST 接口方法:用户通过前端web界面填写接口基本信息,编写相关的SQL语句,测试通过后生成相应的REST 接口。
前端web界面的数据库表详情页面,直接从缓存获取数据。
创建REST 接口的过程中,用户在创建REST接口页面并填写接口的基本信息包括接口名称,接口描述,选择接口访问方式GET、POST、PUT或者DELETE。
编写SQL的规则是wheher子句里的参数值使用$参数名的方式代替,在SQL编辑框完成SQL编写后,会自动提取出入参的相关参数,然后填写对应的参数值以及配置该参数是否必填后,点击测试,后端系统校验相关参数后若校验成功则保存数据到table_service中,返回测试成功表示接口创建成功,如果返回测试失败会返回具体的失败信息供使用者修改SQL。
步骤3:提供REST接口服务方法:提供所有可用接口的详情,用户通过web页面查看每个接口的调用方式,包括调用url、输入参数和输出参数,或者调用接口查看返回数据。
进一步地,步骤3中调用接口后,后端系统首先根据URL拦截获取服务名称,然后查询table_service表获取该接口的相关配置信息,然后根据接口的访问方式获取传过来的参数信息,根据参数配置信息与获取的参数信息先验证必填参数是否为空,如果为空返回错误信息,如果不为空,在校验非必填参数中是否有空值,如果有空值将SQL语句中该参数的过滤条件去掉。全部校验完成后,将对应的参数值替换到SQL对应的位置,执行SQL语句,获取返回的值,将返回值封装后返回调用者。
提供REST接口过程中,用户在接口详情页面查看所有接口的具体调用方式,还包括接口地址,接口方法,接口参数,调用示例。

Claims (6)

1.一种将SQL语句直接转换为对应REST接口的方法,其特征在于,包括如下步骤:
步骤1:系统初始化:首先根据配置文件初始化数据库连接池,然后创建记录REST 接口信息的表table_service以及记录库中所有表详细信息的表table_infomation,从配置文件加载数据库连接相关信息以及创建记录表的详细信息表table_infomation与服务基本信息表table_service的SQL语句,获取到数据库连接池后,执行创建表的SQL语句,最后启动一个定时任务,定期扫描对应数据库中用户创建的与业务相关的每个表的详细信息,同时将得到的表的详细信息持久化到table_information同时便于快速访问会缓存下来;启动定时任务时,该任务的逻辑是首先从table_information表读取所有数据加载到缓存队列,然后周期性的扫描该库下面所有表的详细信息,如果有新的表,将信息添加到table_information的同时更新缓存队列;前端数据库表详情页面,直接从缓存获取数据,该数据主要是辅助用户编写SQL语句,表的详细信息数据会展示到前端,便于用户编写sql语句;
步骤2:创建REST 接口方法:用户通过前端web界面填写接口基本信息,编写相关的SQL语句,测试通过后生成相应的REST 接口;编写SQL的规则是where子句里的参数值使用$参数名的方式代替,在SQL编辑框完成SQL编写后,会自动提取出入参的相关参数,然后填写对应的参数值以及配置该参数是否必填后,点击测试,后端系统校验相关参数后若校验成功则保存数据到table_service中,返回测试成功表示接口创建成功,如果返回测试失败会返回具体的失败信息供使用者修改SQL;
步骤3:提供REST接口服务方法:提供所有可用接口的详情,用户通过web页面查看每个接口的调用方式,包括调用url、输入参数和输出参数,或者调用接口查看返回数据。
2.根据权利要求1所述的将SQL语句直接转换为对应REST接口的方法,其特征在于,步骤3中调用接口后,后端系统首先根据URL拦截获取服务名称,然后查询table_service表获取该接口的相关配置信息,然后根据接口的访问方式获取传过来的参数信息,根据参数配置信息与获取的参数信息先验证必填参数是否为空,如果为空返回错误信息,如果不为空,在校验非必填参数中是否有空值,如果有空值将SQL语句中该参数的过滤条件去掉;全部校验完成后,将对应的参数值替换到SQL对应的位置,执行SQL语句,获取返回的值,将返回值封装后返回调用者。
3.根据权利要求1所述的将SQL语句直接转换为对应REST接口的方法,其特征在于,步骤1中,所述的数据库中的每个表的详细信息包括表名称和表中每个字段的名称以及字段对应的数据类型。
4.根据权利要求1所述的将SQL语句直接转换为对应REST接口的方法,其特征在于,步骤2中前端web界面包括数据库表详情页面,所述数据库表详情页面直接从缓存获取数据。
5.根据权利要求1所述的将SQL语句直接转换为对应REST接口的方法,其特征在于,步骤2中创建REST 接口的过程中,用户在创建REST接口页面并填写接口的基本信息包括接口名称,接口描述,选择接口访问方式GET、POST、PUT或者DELETE。
6.根据权利要求1所述的将SQL语句直接转换为对应REST接口的方法,其特征在于,步骤3中提供REST接口过程中,用户在接口详情页面查看所有接口的具体调用方式,还包括接口地址,接口方法,接口参数和调用示例。
CN201911121070.1A 2019-11-15 2019-11-15 一种将sql语句直接转换为对应rest接口的方法 Active CN110825388B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911121070.1A CN110825388B (zh) 2019-11-15 2019-11-15 一种将sql语句直接转换为对应rest接口的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911121070.1A CN110825388B (zh) 2019-11-15 2019-11-15 一种将sql语句直接转换为对应rest接口的方法

Publications (2)

Publication Number Publication Date
CN110825388A CN110825388A (zh) 2020-02-21
CN110825388B true CN110825388B (zh) 2021-08-31

Family

ID=69555932

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911121070.1A Active CN110825388B (zh) 2019-11-15 2019-11-15 一种将sql语句直接转换为对应rest接口的方法

Country Status (1)

Country Link
CN (1) CN110825388B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535830A (zh) * 2020-04-21 2021-10-22 中移信息技术有限公司 接口自动扩展方法、装置、设备及存储介质
CN111581088B (zh) * 2020-04-29 2023-09-15 上海中通吉网络技术有限公司 基于Spark的SQL程序的调试方法、装置、设备及存储介质
CN112328917A (zh) * 2020-11-04 2021-02-05 浪潮云信息技术股份公司 一种面向SQL编写生成http接口服务和数据展示页面的方法
CN112650481A (zh) * 2020-12-23 2021-04-13 航天信息股份有限公司 一种用于对数据进行处理的方法及系统
CN112612453A (zh) * 2020-12-23 2021-04-06 荆门汇易佳信息科技有限公司 RESTful服务驱动的JS对象简谱数据互换平台
CN112487075B (zh) * 2020-12-29 2021-08-31 中科院计算技术研究所大数据研究院 一种集成关系型和非关系型数据库数据转换算子的方法
CN112859752B (zh) * 2021-01-06 2021-12-28 华南师范大学 一种激光绣花机远程监控管理系统
CN115309566B (zh) * 2022-08-09 2023-09-05 医利捷(上海)信息科技有限公司 一种服务接口的动态管理方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107480053A (zh) * 2017-07-21 2017-12-15 杭州销冠网络科技有限公司 一种软件测试数据生成方法及装置
CN108388622A (zh) * 2018-02-12 2018-08-10 平安科技(深圳)有限公司 Api接口动态生成方法、装置、计算机设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2555087A (en) * 2016-10-11 2018-04-25 Sage South Africa Pty Ltd System and method for retrieving data from server computers
CN107220274B (zh) * 2017-04-13 2020-10-09 中科曙光南京研究院有限公司 一种可视化数据接口集市实现方法
CN110392068B (zh) * 2018-04-17 2022-06-21 阿里巴巴集团控股有限公司 一种数据传输方法、装置及其设备
CN109753532A (zh) * 2018-12-26 2019-05-14 苏州宏软信息技术有限公司 用于浏览器端访问数据库的接口服务系统及其实施方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107480053A (zh) * 2017-07-21 2017-12-15 杭州销冠网络科技有限公司 一种软件测试数据生成方法及装置
CN108388622A (zh) * 2018-02-12 2018-08-10 平安科技(深圳)有限公司 Api接口动态生成方法、装置、计算机设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种可扩展的临床数据中心系统设计与实现;王菲菲;《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》;20170815;I137—5 *

Also Published As

Publication number Publication date
CN110825388A (zh) 2020-02-21

Similar Documents

Publication Publication Date Title
CN110825388B (zh) 一种将sql语句直接转换为对应rest接口的方法
CN101334728B (zh) 一种基于xml文档描述的界面生成方法和装置
CN101271475B (zh) 一种商业智能系统
CN112015413A (zh) 一种免编程数据可视化Web展示系统及其实现方法
US8370859B2 (en) Creating web services from an existing web site
CN109582647B (zh) 一种面向非结构化证据文件的分析方法及系统
CN107766526B (zh) 数据库访问方法、装置及系统
CN110908712A (zh) 移动端跨平台的数据处理方法和设备
US9930113B2 (en) Data retrieval via a telecommunication network
US20080140694A1 (en) Data transformation between databases with dissimilar schemes
CN101546259A (zh) 支持运行时模型扩展的对象关系映射系统和方法
CN114281342A (zh) 一种代码自动生成方法
CN111125440A (zh) 一种基于Monad的持久层复合条件查询方法与存储介质
CN113204571A (zh) 涉及写入操作的sql执行方法、装置及存储介质
CN114925084A (zh) 分布式事务处理方法、系统、设备及可读存储介质
CN110674205B (zh) 单表查询方法、装置、终端及可读存储介质
CN110750553A (zh) 一种在业务管理系统中对数据进行自定义导出的方法
CN102508673A (zh) 快速开发与配置平台类软件的系统及方法
CN116400914A (zh) 一种基于数据模型快速构建web应用的方法
CN111008011A (zh) 一个面向电力平台应用开发的系统构建器
CN115291869A (zh) 一种基于vue自定义组件的零代码表单生成方法与系统
CN110162299A (zh) web程序及其快速开发框架、开发方法与相关设备
CN114546381A (zh) 前端页面代码文件生成方法、装置、电子设备及存储介质
CN113821557A (zh) Web页面与后端进行数据交互的方法
EP2990960A1 (en) Data retrieval via a telecommunication network

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 450000 8 / F, creative island building, no.6, Zhongdao East Road, Zhengdong New District, Zhengzhou City, Henan Province

Applicant after: China Science and technology big data Research Institute

Address before: 450000 8 / F, creative island building, no.6, Zhongdao East Road, Zhengdong New District, Zhengzhou City, Henan Province

Applicant before: Big data Research Institute Institute of computing technology Chinese Academy of Sciences

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant
OL01 Intention to license declared