# sqlrest **Repository Path**: pywu/sqlrest ## Basic Information - **Project Name**: sqlrest - **Description**: SQLREST是一款完全开源的SQL转 RESTful API的SQL2API低代码工具 - **Primary Language**: Java - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: https://gitee.com/inrgihc/sqlrest - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 80 - **Created**: 2025-07-03 - **Last Updated**: 2025-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![](https://gitee.com/inrgihc/sqlrest/badge/star.svg) ![](https://gitee.com/inrgihc/sqlrest/badge/fork.svg?theme=gvp) ![SQLREST](docs/images/SQLREST.PNG#pic_center) > 将 SQL 查询转化为 RESTful API的便捷工具 ## 一、工具介绍 SQLREST 是一个开源项目,旨在提供一种简单而强大的方式来将 SQL 查询转化为 RESTful API。它支持多种数据库,允许用户通过配置 SQL 语句来创建 API,无 需编写复杂的后端逻辑,用户只需选择数据源、输入SQL或脚本、简单path配置即可快速生成API接口。 ### 1、功能介绍 SQLREST的功能包括: - **SQL直接构建API**:通过配置SQL和参数即可生成 RESTful API。 - **多数据库支持**:支持常见的20+种数据库,其中包含多款国产数据库。 - **MyBatis语法支持**:支持MyBatis的动态SQL语法。 - **Groovy脚本支持**:支持groovy语法构建复杂场景下的接口。 - **参数类型支持**:支持整型/浮点型/时间/日期/布尔/字符串/对象等多种类型。 - **ContentType支持**:支持application/x-www-form-urlencoded及application/json等多种请求格式。 - **身份认证**:提供基于 Token 的认证机制,保护 API 安全。 - **Swagger在线文档**:支持自动生成swagger-ui的在线接口文档。 - **缓存配置支持**:支持 Hazelcast 和 Redis 缓存,提升 API 访问性能。 - **流控配置管理**:通过 Sentinel 支持流量控制,防止系统过载。 - **统一告警对接**:支持统一告警系统的对接与触发。 - **大模型MCP服务**:支持简单配置即可创建MCP的tool。 SQLREST作为微服务架构下的数据访问中间件,适合以下场景: - **快速将 SQL 转换为 API** - **企业级数据库访问统一接口** - **API 访问控制与流控** - **适用于数据中台、BI 工具、低代码平台等** ### 2、数据库清单 截至当前,已支持的数据库包括: - 甲骨文的Oracle - 微软的Microsoft SQLServer(2005+) - MySQL - MariaDB - PostgreSQL/Greenplum - IBM的DB2 - Sybase数据库 - 国产达梦数据库DM - 国产人大金仓数据库Kingbase8 - 国产翰高数据库HighGo - 国产神通数据库Oscar - 国产南大通用数据库GBase8a - Apache Hive - SQLite3 - OpenGauss - ClickHouse - Apache Doris - StarRocks - OceanBase - TDengine ### 3、模块结构功能 ![STRUCTURE.PNG](docs/images/STRUCTURE.PNG) ``` └── sqlrest ├── sqlrest-common // sqlrest通用定义模块 ├── sqlrest-mcp // sqlrest的MCP协议模块 ├── sqlrest-template // sqlrest的SQL内容模板模块 ├── sqlrest-cache // sqlrest执行器缓存模块 ├── sqlrest-persistence // sqlrest的数据库持久化模块 ├── sqlrest-core // sqlrest接口核心实现模块 ├── sqlrest-gateway // Gateway网关节点 ├── sqlrest-executor // Executor执行节点 ├── sqlrest-manager // Manager管理节点 ├── sqlrest-manager-ui // WEB交互页面 ├── sqlrest-dist // 项目打包模块 ``` ### 4、正在规划中的功能 - **接口检索功能**: 支持类似百度搜索的接口搜索功能,方便接口查找。 - **接口详情功能**:支持接口的详细定义、数据来源、访问分析等功能。 - **前端界面美化**: 美化界面的交互展示,尤其是“拓扑结构”页面。 - **增强SQ语法自动提示**: 在实现的库名表名提示的基础上,基于数据库元信息的增强智能提示,强化用户体验。 ## 二、编译打包 本工具纯Java语言开发,依赖全部来自于开源项目。SQLREST项目采用Maven构建。 ### 1、编译打包 - 环境要求: **JDK**:>=1.8 (建议用JDK 1.8) **maven**:>=3.6 > Maven 仓库默认在国外, 国内使用难免很慢,可以更换为阿里云的仓库。 > > 参考教程: [配置阿里云的仓库教程](https://www.runoob.com/maven/maven-repositories.html) - 编译命令: **(1) windows下:** ``` 双击build.cmd脚本文件即可编译打包 ``` **(2) Linux下:** ``` git clone https://gitee.com/inrgihc/sqlrest.git cd sqlrest/ sh ./build.sh ``` **(3) Docker下:** ``` git clone https://gitee.com/inrgihc/sqlrest.git cd sqlrest/ sh ./docker-maven-build.sh ``` ### 2、安装部署 (1) 当编译打包完成后,会在sqlrest/target/目录下生成sqlrest-relase-x.x.x.tar.gz的打包文件,将文件拷贝到已安装JRE的部署机器上解压即可。 (2) 基于docker-compose提供linux联网环境下的一键安装,x86的CentOS系统下安装命令如下: ``` curl -k -sSL https://gitee.com/inrgihc/sqlrest/attach_files/2241027/download -o /tmp/sr.sh && systemctl stop firewalld && bash /tmp/sr.sh && rm -f /tmp/sr.sh ``` 文档详见: [build-docker/install/README.md](build-docker/install) (3) 物理机方式部署 - 步骤1:准备好一个MySQL5.7+或PostgreSQL11+的数据库 > 当使用MySQL数据库时,config.ini里的DB_TYPE配置mysql,并需要配置 MYSQLDB_ 前缀的参数; > > 当使用PostgreSQL数据库时,config.ini里的DB_TYPE配置postgres,并需要配置 PGDB_ 前缀的参数 - 步骤2:修改sqlrest-relase-x.x.x/conf/config.ini配置文件 ``` # manager节点的host地址,如果gateway与executor节点 # 与manager不在同一台机器时需要配置manger节点的IP地址 MANAGER_HOST=localhost # manager的端口号 MANAGER_PORT=8090 # executor的端口号 EXECUTOR_PORT=8092 # gateway的端口号 GATEWAY_PORT=8091 # 数据库类型:mysql或postgres DB_TYPE=mysql # mysql的host地址 MYSQLDB_HOST=192.168.31.57 # mysql的端口号 MYSQLDB_PORT=3306 # mysql的库名 MYSQLDB_NAME=sqlrest # mysql的账号 MYSQLDB_USERNAME=root # mysql的密码 MYSQLDB_PASSWORD=123456 # pgsql的host地址 PGDB_HOST=192.168.31.57 # pgsql的端口号 PGDB_PORT=5432 # pgsql的库名 PGDB_NAME=sqlrest # pgsql的账号 PGDB_USERNAME=postgres # pgsql的密码 PGDB_PASSWORD=123456 ``` >sqlrest的缓存支持使用分布式的hazelcast或者redis,在conf/{manager,gateway,executor}/目录下的application.yml配 >置文件中,可通过如下调整配置实用redis缓存,默认为使用hazelcast缓存(注意:manager/gateway/executor三者的缓存配置要一致)。 ``` sqlrest: cache: hazelcast: # 是否开启使用hazelcast缓存 enabled: false redis: # 是否开启使用redis缓存,开启时需要配置下面对应的redis信息 enabled: true host: 127.0.0.1 port: 6379 password: 123456 database: 0 ``` - 步骤3:如果为多主机节点部署,需要将sqlrest-release-x.x.x分发到其他主机节点上;如果为单机(单节点)部署可直接忽略本步骤。 - 步骤4:启动服务 > windows下,需按照如下顺序双击脚本启动对应的服务 启动manager服务:bin/manager_startup.cmd 启动executor服务:bin/executor_startup.cmd 启动gateway服务:bin/gateway_startup.cmd > linux下,需按照如下顺序执行脚本启动对应的服务 启动manager服务:sh bin/sqlrestctl.sh start manager 启动executor服务:sh bin/sqlrestctl.sh start executor 启动gateway服务:sh bin/sqlrestctl.sh start gateway ### 3、系统访问 启动完成后,通过http://: 地址即可访问。 登陆账号:```admin``` 登陆密码:```123456``` ## 三、使用教程 ### 1、使用说明文档 [《SQLREST工具使用说明文档》](https://www.yuque.com/sanpang-jq7te/nys82g/hur636mthgyhaodb) ### 2、部分系统截图 ![001.png](docs/images/001.PNG) ![002.png](docs/images/002.PNG) ![003.png](docs/images/003.PNG) ![004.png](docs/images/004.PNG) ![005.png](docs/images/005.PNG) ![006.png](docs/images/006.PNG) ![009.png](docs/images/009.PNG) ![010.png](docs/images/010.PNG) ![011.png](docs/images/011.PNG) ## 四、贡献参与 为了能让项目得到更好的可持续的发展,SQLREST期望获得更多的代码开发爱好者参与代码贡献,包括但不限于: - 改进前端 UI/UX - 修复 bug 和性能优化 - 增加新的易用性功能 贡献操作文档参考:[贡献说明指南](https://gitee.com/inrgihc/dbswitch/blob/master/CONTRIBUTE.md) ## 五、项目推荐 [数据库迁移同步工具dbswitch] (https://gitee.com/inrgihc/dbswitch) ## 六、问题反馈 如果您看到并使用了本工具,或您觉得本工具对您有价值,请为此项目**点个赞**,以表示对本项目的支持,多谢!如果您在使用时遇到了bug,欢迎在issue中反馈。也可扫描下方二维码入群讨论:(加好友请注明:"SQLREST交流") ![structure](https://gitee.com/inrgihc/dbswitch/raw/master/images/weixin.PNG)