写点什么

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

作者:zhumingwu
  • 2024-04-24
    宁夏
  • 本文字数:1199 字

    阅读完需:约 4 分钟

大家好今天我想跟大家分享一个有用的工具 - 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,使用开发时直接调试。

用户头像

zhumingwu

关注

还未添加个人签名 2015-08-13 加入

还未添加个人简介

评论

发布
暂无评论
后端的克星,前端的福音 -快捷提供数据库的REST数据访问接口_zhumingwu_InfoQ写作社区