sqlrest部署:SQL 即 API

前瞻

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容