前瞻
SQLREST ( 简称: SR ) 是一个完全开源的项目,旨在提供一种简单而强大的方式来将 SQL( 或SQL-Like,即: DSL ) 操作转化为 RESTful API。它支持多种数据库,允许用户通过配置 SQL(或DSL) 语句来创建 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和knife4j等在线接口文档。
- 缓存配置支持:支持Hazelcast或Redis缓存,提升API访问性能。
- 流控配置管理:通过Sentinel支持流量控制,防止系统过载。
- 统一告警对接:支持统一告警系统的对接与触发。
- RESTful接口转发:支持通过DSL进行HTTP数据源的RESTful接口转发功能。
- 文档数据库支持:支持通过DSL进行MongoDB和ElasticSearch等文档数据库开发接口。
- 接口版本管理:支持接口的版本控制管理功能。
- 批量导入导出:支持接口的批量导入导出功能。
- 大模型MCP服务:支持简单配置即可创建MCP的tool。
SQLREST作为微服务架构下的数据访问中间件,适合以下场景:
- 快速将 SQL(或DSL) 转换为 API
- 适用于数据中台、BI 工具、低代码平台等
部署
1. Docker Compose 部署
# 拉取源码
git clone https://gitee.com/dromara/sqlrest.git
cd sqlrest/build-docker/install
2. 修改docker-compose.yml
我的是外部的mysql数据库
$ vi `docker-compose.yml`
services:
manager:
container_name: sqlrest_manager
image: registry.cn-hangzhou.aliyuncs.com/inrgihc/sqlrest-manager:latest
network_mode: host
environment:
DB_TYPE: mysql
MYSQLDB_HOST: 192.168.177.21
MYSQLDB_PORT: 3306
MYSQLDB_USERNAME: sqlrest_user
MYSQLDB_PASSWORD: 123456
MYSQLDB_NAME: sqlrest
MANAGER_HOST: localhost
MANAGER_PORT: 8090
EXECUTOR_PORT: 8092
GATEWAY_PORT: 8091
SQLREST_DS_ENCRYPT: false
# SQLREST_MANAGER_URL: http://www.example.com:8090
# SQLREST_GATEWAY_URL: http://www.example.com:8091
volumes:
- /tmp:/tmp
executor:
container_name: sqlrest_executor
image: registry.cn-hangzhou.aliyuncs.com/inrgihc/sqlrest-executor:latest
network_mode: host
environment:
DB_TYPE: mysql
MYSQLDB_HOST: 192.168.177.21
MYSQLDB_PORT: 3306
MYSQLDB_USERNAME: sqlrest_user
MYSQLDB_PASSWORD: 123456
MYSQLDB_NAME: sqlrest
MANAGER_HOST: localhost
MANAGER_PORT: 8090
EXECUTOR_PORT: 8092
GATEWAY_PORT: 8091
SQLREST_DS_ENCRYPT: false
volumes:
- /tmp:/tmp
gateway:
container_name: sqlrest_gateway
image: registry.cn-hangzhou.aliyuncs.com/inrgihc/sqlrest-gateway:latest
network_mode: host
environment:
DB_TYPE: mysql
MYSQLDB_HOST: 192.168.277.21
MYSQLDB_PORT: 3306
MYSQLDB_USERNAME: sqlrest_user
MYSQLDB_PASSWORD: 123456
MYSQLDB_NAME: sqlrest
MANAGER_HOST: localhost
MANAGER_PORT: 8090
EXECUTOR_PORT: 8092
GATEWAY_PORT: 8091
SQLREST_DS_ENCRYPT: false
volumes:
- /tmp:/tmp
3.启动服务
Manager + Executor + Gateway
docker-compose up -d
4.查看容器状态
docker-compose ps
6. 容器报错
- 如果服务启动失败,可以查看日志,提示:
Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
这是因为项目运行没有添加allowPublicKeyRetrieval=true&useSSL=false,两种方式,一种修改镜像后重新build,另一种方式将mysql8默认的验证方式修改为mysql_native_password认证
ALTER USER 'sqlrest_user'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
- 服务启动成功,但打不开管理后台等
请查看云厂商的端口放行情况和本机的防火墙情况
访问与登录
管理后台:http://192.168.177.24:8090
默认账号:admin / 密码:123456
API 网关:http://192.168.177.24:8091
Swagger 文档:http://192.168.177.24:8091/swagger-ui.html