后端的克星,前端的福音 - 快捷提供数据库的 REST 数据访问接口
大家好今天我想跟大家分享一个有用的工具 - DB REST 这个工具的主要作用,就是快速的把数据库的访问公开为 restful API。以下是具体的说明:
产品特色
无代码,开放数据库常见 CRUD 接口
低代码,会写 SQL 就能扩展更多功能
可扩展,通过 go template 模板,可以定义满足复杂要求的功能开发
稳定高效,以最低的成本提高最高效的数据库访问
产品功能
集成网站
参数化 SQL
基于模板传递参数
日志统计
技术实现本软件使用 golang 开发,可以通过 go template 定义数据库执行脚本,快捷提供 REST 数据访问接口。
安装直接下载:
开源地址:https://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(2, now());
第一行以-- EXECUTE PREPARE_QUERY 开头,定义了存储查询具体参数;
第二行以-- PREPARE PREPARE_QUERY 开头,定义了存储查询具体内容。
这样做的好处是,在开发过程中,可以通过 &t 打印出来完成的 SQL,使用开发时直接调试。
评论