SQLRestful开发入门示例
开发环境要求
- docker
- notepad或- vscode或- editplus
- curl(可选)
- Linux或- Windows
准备SQLRestful脚本
使用如下命令创建一个demo.hcl文件:
cat>demo.hcl<<EOF
//接口定义
//自动建表
_create_db {
  exec = <<SQL
    CREATE TABLE IF NOT EXISTS test (
        name    TEXT  PRIMARY KEY  NOT NULL,
        hello          TEXT    NOT NULL
    );
  SQL
}
//测试接口
test {
  //定义接口标签
  tags = ["1.示例接口"]
  //引入自动建表
  include = ["_create_db"]
  //定义接口地址
  path = "/test"
  //获取分页数据接口
  get {
    //概要描述
    desc = "获取分页数据"
    //绑定参数
    bind {
      offset = "$input.offset"
      limit = "$input.limit"
    }
    //返回记录总数
    total = <<SQL
      SELECT COUNT(*) FROM test;
    SQL
    //返回分页数据
    exec = <<SQL
      SELECT name, hello FROM test LIMIT :limit OFFSET :offset;
    SQL
  }
  //新增数据
  post {
    //概要描述
    desc = "新增数据"
    //参数绑定
    bind {
      name = "$input.name"
      hello = "$input.hello"
    }
    //插入数据库并返回插入记录
    exec = <<SQL
      INSERT OR REPLACE INTO test (name, hello) VALUES(:name, :hello);
      ---
      SELECT name, hello FROM test WHERE name = :name;
    SQL
    //返回对象
    result = "object"
  }
}
EOF
👉这里可以直接下载demo.hcl文件👈。
运行SQLRestful开发的微服务
命令行执行以下docker命令运行示例脚本开发的微服务接口:
docker run -ti --rm -p 80:80 \
  -v /path/of/your_demo.hcl:/test/demo.hcl:ro \
  snz1/sqlrestful \
  -driver "sqlite3" \
  -dsn "/test/db.sqlite?create=true" \
  --swagger \
  -debug 3 \
  -config /test/demo.hcl \
- -p 80:80前面那个- 80表示宿主机转发的端口
- /path/of/your_demo.hcl为你创建的SQLRestful脚本文件
测试微服务接口
如果你使用远程主机运行SQLRestufl服务请把下面命令中的
127.0.0.1替换成远程主机地址。
新增数据测试
- 命令行执行:
curl -X POST "http://127.0.0.1/test?name=hello&hello=world"
- 命令行返回:
{"code":0,"data":{"hello":"world","name":"hello"},"message":"操作成功!"}
查询数据测试
- 命令行执行:
curl -X GET "http://127.0.0.1/test?limit=15
- 命令行返回:
{"code":0,"data":{"data":[{"hello":"world","name":"hello"}],"offset":"0","total":1},"message":"操作成功!"}
通过swagger测试
新开标签并打开网址http://127.0.0.1/doc.html,如下图所示:

SQlRestful提供了一个SwaggerUI界面用于测试实现的微服务接口,其默认是禁用的。
如果需要启用SwaggerUI界面请在启动命令中加上-swagger开关。
进一步了解
SQLRestful除了可以使用sql实现简单的微服务接口外,还可以配合js脚本实现复杂功能的,包括:
- 内置多种数据库支持(参见【数据库支持列表】)
- 可通过js脚本实现可变条件的SQL查询;
- 可通过js配置实现对请求参数的校验;
- 可通过js实现SQL查询结果转换;
- js脚本可请求其他接口并支持- jwt规范;
- 为接口提供配置方式的Redis缓存实现;
- 提供基于用户统一安全认证服务规范的权限验证配置
使用建议
☞ SQLRestful云原生开发工具是为了节省数据中台服务接口的开发成本!
☞ SQLRestful不能适用于复杂业务逻辑的应用场景,总之合适的才是最好的!