后端的克星,前端的福音 - 快捷提供数据库的 REST 数据访问接口

79 阅读3分钟

大家好今天我想跟大家分享一个有用的工具 - DB REST 这个工具的主要作用,就是快速的把数据库的访问公开为 restful API。以下是具体的说明:

产品特色

  • 无代码,开放数据库常见 CRUD 接口

  • 低代码,会写 SQL 就能扩展更多功能

  • 可扩展,通过 go template 模板,可以定义满足复杂要求的功能开发

  • 稳定高效,以最低的成本提高最高效的数据库访问

产品功能

  • 集成网站

  • 参数化 SQL

  • 基于模板传递参数

  • 日志统计

技术实现本软件使用 golang 开发,可以通过 go template 定义数据库执行脚本,快捷提供 REST 数据访问接口。

安装直接下载:

开源地址:github.com/openyeap/db

使用方法启动

db --help

-dsn string

PostgreSQL DSN (default "user=postgres password=postgres dbname=dev sslmode=disable host=localhost port=5432")

-env string

Environment (dev|uat|prd) (default "dev")

-port int

API server port (default 5050)

开发过程正常情况下安装软件,连接到数据库,可即可完成数据库的 CRUD 常规接口。这里主要介绍通过 SQL 脚本开发更多定制功能接口。

创建脚本规则在 SQL 目录创建 SQL 文件时,需要理解 SQL 文件相对于 SQL 目录的路径就是请求路径。

同时,通过以下文件命名规则,指示请求不同格式的结果返回:

  • 文件命名以 once 结尾 返回影响行

  • 文件命名以 first 结尾 返回第一条数据

  • 文件命名以 more 结尾 返回多对象集合

  • 文件命名以 csv 结尾 返回单对象集合文件

  • 文件命名以 zip 结尾 返回多对象集合文件

  • 文件命名以 other 结尾 返回单对象集合

模板引擎在 SQL 文件中使用 go template 语法,具体语法参考:GO模板语法

在模板中可以使用以下对象访问接口请求参数:

  • {{.query}} - 访问请求参数对象

  • {{.body}} - 访问请求体的 JSON 对象

  • {{.form}} - 访问请求表体对象

  • {{.header}} - 访问请求头参数对象

代码生成除了手动编写脚本,还可以通过自动化工具生成,参考:GitHub - openyeap/cg

遵守以上规则,理论上就能完成功能开发,但这里给出一些最佳实践建议:

推荐

  • 文件路径名 FilePath,建议按主模块,子模块与功能三级方式组织。比如:/system/user/create_once.sql。

  • 使得 HTTP 的 GET 请求时,建议使用请求参数,通过 query 获取请求参数。

  • 使得 HTTP 的 POST 请求时,建议使用请求头:content-type: application/json,通过 body 读取提交内容。

不推荐

  • 不建议使用 DELETE,PUT 等不常用 HTTP 方法。

  • 不建议在 GET 中提交 body

最佳实践

推荐使用存储查询方式编写 SQL,格式如下:

-- EXECUTE PREPARE_QUERY('{{ index .query.name 0 }}', '2023-03-12 23:12')

-- PREPARE PREPARE_QUERY(text, timestamp) AS

insert intot_user(nick_name, rev, updated_ts, created_ts)values(1,′0,1,t,f′,2, now());​

第一行以-- EXECUTE PREPARE_QUERY 开头,定义了存储查询具体参数;

第二行以-- PREPARE PREPARE_QUERY 开头,定义了存储查询具体内容。

这样做的好处是,在开发过程中,可以通过 &t 打印出来完成的 SQL,使用开发时直接调试。