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

本文介绍了DBREST,一个允许用户通过SQL和gotemplate轻松开发RESTfulAPI的工具,支持低代码扩展,提供集成网站参数化SQL、日志统计等功能,使用Golang开发并支持Windows和Linux平台。文章详细讲解了安装、使用方法以及最佳实践建议。
摘要由CSDN通过智能技术生成

大家好今天我想跟大家分享一个有用的工具 - DB REST

这个工具的主要作用,就是快速的把数据库的访问公开为restful API。以下是具体的说明:

产品特色

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

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

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

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

产品功能

  • 集成网站

  • 参数化SQL

  • 基于模板传递参数

  • 日志统计

技术实现

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

安装

直接下载:

- [Windows](https://byeap.com/download/db.win.zip)

- [Linux](https://byeap.com/download/db.linux.zip)

开源地址: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)

检测

curl http://localhost:5050/api/test/echo?t&id=1&name=test

开发过程

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

创建脚本规则

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

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

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

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

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

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

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

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

模板引擎

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

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

{{.query}} - 访问请求参数对象
{{.body}} - 访问请求体的JSON对象
{{.form}} - 访问请求表体对象
{{.header}} - 访问请求头参数对象

为了简化开发,还可以使用以下内置函数:

  • todo

  • wip

代码生成

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

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

推荐

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

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

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

不推荐

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

  2. 不建议在GET中提交body

  3. 不建议

存储查询

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

-- EXECUTE PREPARE_QUERY('{{ index .query.name 0 }}', '2023-03-12 23:12')
-- PREPARE PREPARE_QUERY(text,  timestamp) AS
insert into
    t_user(nick_name, rev, updated_ts, created_ts)
values
    ($1, '{0,1,t,f}', $2, now());
​

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

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

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

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值