【REST2SQL】10 REST2SQL操作指南
【REST2SQL】01RDB关系型数据库REST初设计
【REST2SQL】02 GO连接Oracle数据库
【REST2SQL】03 GO读取JSON文件
【REST2SQL】04 REST2SQL第一版Oracle版实现
【REST2SQL】05 GO 操作 达梦 数据库
【REST2SQL】06 GO 跨包接口重构代码
【REST2SQL】07 GO 操作 Mysql 数据库
【REST2SQL】08 日志重构增加输出到文件log.txt
【REST2SQL】09 给Go的可执行文件exe加图标和版本信息等
【REST2SQL】从设计到现学Go到实现,大约一个多月的时间,为了致敬费曼学习法(通过自己的语言,用最简单的话把一件事向别人讲清楚,并且让外行人也能听懂。)这一段时间输出了不少博文,主要目的是自己的学习过程记录一下。年龄大了脑子记不住了,需要的时候再回头看看。

REST2SQL核心功能就是连接数据库即可提供REST和SQL的CRUD服务。在config.json里设置数据库连接字符串及服务端口等参数,REST服务提供POST、GET、PUT、DELETE4种请求,SQL服务可执行INSERT、SELECT、UPDATE、DELETE4种SQL语句;请求结果返回JSON字符串(以后加上JSON SCHEMA)。开启REST2SQL服务,后台数据服务基本能覆盖到了,可以作为后端服务单独部署。
REST2SQL可以作为内部开发的运维工具,也可以对外提供REST服务,后端开发再也没有CRUD重复开发的烦恼。
0 我的开发测试环境
| 项目 | 版本 |
|---|---|
| 操作系统 | Windows 10 家庭中文版,4 位操作系统, 基于 x64 的处理器 |
| 编程语言 | Go 1.21.5 |
| Oracle | Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production |
| DM | DM Database Server 64 V8 DB Version: 0x7000c |
| MySQL | 8.0.35 MySQL Community Server - GPL x86_6 Win64 |
| 浏览器 | Microsoft Edge 120.0.2210.133 (正式版本) (64 位) |
| Curl | 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN Release-Date: 2023-03-20 |
| Postman | December 2023 (v10.21) |
1 REST2SQL文件
REST2SQL采用Go语言开发编译,只有4个文件,一个配置文件config.json,一个可执行文件rest2sql.exe,另外两个为操作指南。

2 REST2SQL配置config.json
用记事本打开config.json可配置REST2SQL,最重要是的数据库连接字符串connString。文件内容如下:
{"hostPort":"localhost:5217","connString":"mysql://blma:5217@(127.0.0.1:3306)/blma","_oracle":"oracle://blma:5217@127.0.0.1:1521/CQYH","_dm":"dm://BLMA:dameng5217@127.0.0.1:5236/BLMA","_mysql":"mysql://blma:5217@(127.0.0.1:3306)/blma","_mssql":"mssql://","_postgresql":"postgresql://","REST":"GET,POST,PUT,DELETE", "_REST":"GET,POST,PUT,DELETE", "SQL":"SELECT","_SQL":"SELECT,INSERT,UPDATE,DELETE"}
- hostPort 配置服务监听端口。
- connString 配置数据库连接字符串,下面有_oracle、_dm、_mysql的配置范例,目前支持这三种数据库,以后还会扩展。
- REST 配置可允许的REST请求,可在GET、POST、PUT、DELETE中选配,默认全部。
- SQL 配置可允许执行的SQL语句,可在SELECT、INSERT、UPDATE、DELETE中选配,默认SELECT
3 启动REST2SQL服务
Windows系统下双击rest2sql.exe即可启动服务,启动成功后显示如下信息:

第一行为当前启动的配置信息,第二行为监听启动成功。
2024/01/12 10:57:32 config:{mysql mysql://blma:5217@(127.0.0.1:3306)/blma localhost:5217 GET,POST,PUT,DELETE SELECT}
2024/01/12 10:57:32 Starting Http Server at localhost:5217
关闭此控制台窗口就停止提供服务。
4 REST请求操作
config.json文件里,配置 REST项,可以开启REST服务请求。只支持GET、POST、PUT、DELETE请求,可以设置0-4个请求,0个就是关闭REST请求。
"REST":"GET,POST,PUT,DELETE", "_REST":"GET,POST,PUT,DELETE",
4.1 GET请求
get请求支持where和orderby查询条件。
1.curl请求
curl http://127.0.0.1:5217/rest/kezz
curl http://127.0.0.1:5217/rest/kezz/?where=n_zzxj%3E300
curl http://127.0.0.1:5217/rest/kezz/?orderby=p_id
curl http://127.0.0.1:5217/rest/kezz/?where=n_zzxj%3E300&orderby=p_id
curl http://127.0.0.1:5217/rest/kezz/?orderby=p_id&where=n_zzxj%3E300

2. edge浏览器请求

3.Postman请求

4.2 POST请求
POST请求,url定位要请求的表,在加上data即可。
1.Postman请求

2.curl请求
注意windows 10的curl 双引号""需要转义\
curl -X POST http://127.0.0.1:5217/rest/kezz --data {\"p_id\":-300,\"s_dm\":\"200300\",\"s_mc\":\"REST3\"}

4.3 PUT请求
url加where定位要更新的记录。
1.Postman请求

2.curl请求
curl -X PUT http://127.0.0.1:5217/rest/kezz/?where=p_id=-200 --data {\"s_mc\":\"CURL\"}

4.4 DELETE请求
url加where定位要删除的记录。
1.Postman请求

2.curl请求
curl -X DELETE http://127.0.0.1:5217/rest/kezz/?where=p_id=-200

5 SQL执行操作
config.json文件里,配置 SQL项,可以开启SQL服务请求。只支持SELECT,INSERT,UPDATE,DELETE请求,可以设置0-4个请求,0个就是关闭SQL请求。
默认设置只能执行SELECT。
URL栏可以直接输入SQL即可执行。
5.1 执行SELECT语句
http://127.0.0.1:5217/sql/select * from kezz

5.2 执行INSERT语句
http://127.0.0.1:5217/sql/insert into kezz (p_id,s_dm,s_mc) values (-400,'400400','SQL')

5.3 执行UPDATE语句
http://127.0.0.1:5217/sql/update%20kezz%20set%20s_mc='update'%20where%20p_id%20=%20-400

5.4 执行DELETE语句
http://127.0.0.1:5217/sql/delete%20from%20kezz%20where%20p_id=-400

6 资源下载
REST2SQL实现连接数据库,数据库的表或视图即可提供REST的GET\POST\PUT\DELETE请求,SQL可执行SQL
https://download.csdn.net/download/sufuq/88684853
相关文章:
【REST2SQL】10 REST2SQL操作指南
【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…...
199_二叉树的右视图
描述 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 思路 对树进行深度优先搜索,在搜索过程中,我们总是先访问右子树。那么对于每一层来说,…...
第七讲_css浮动
css浮动 1. 设置浮动2. 浮动的特点3. 浮动的影响4. 解决浮动的影响4.1 解决父元素高度塌陷的问题4.2 解决对兄弟元素影响问题 1. 设置浮动 浮动是通过float属性设置,float取值范围: none:不浮动,默认值。left:向左浮…...
2024秋招,顺丰科技测试开发工程师一面
前言 今天回顾一下,一个被捞的全流程面试经历 时间线 9月21日测评 10月26日技术一面,本来是11点半开始,我正做另一个笔试呢,突然给我打电话开面 20分钟结束,一开始以为KPI,结果给过了 10月31日技术二…...
基于apache的http文件服务配置
背景: 公司的产品使用的第三方模组可以OTA,厂家提供的是window开启软件,这样就可以在本机做http下载服务器,然后使用端口映射的方式,公开到外网,这样就可以进行4G网络访问内网服务器了。但这个有个弊端&am…...
连铸工艺和模铸工艺有什么区别。
问题描述:连铸工艺和模铸工艺有什么区别。 问题解答: 连铸工艺和模铸工艺在多个方面存在显著差异: 指代不同: 模铸是成批大量生产锻件的锻造方法。连铸即为连续铸钢的锻造方法。 工艺不同: 模铸在锻压机械的作用…...
pyqt treeWidget树生成
生成treeWidget树与获取treeWidget树节点的数据 # encodingUTF-8 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QTreeWidgetItem, QLineEdit, QSpinBox, QComboBox from PyQt5.QtWidgets import QWidget from release_test import Ui_F…...
DataFunSummit:2023年云原生大数据峰会:核心内容与学习收获(附大会核心PPT下载)
随着数字化转型的深入推进,大数据技术已经成为企业获取竞争优势的关键因素之一。本次峰会汇聚了业界顶尖的大数据专家、企业领袖和技术精英,共同探讨云原生大数据领域的最新技术和趋势。本文将深入分析峰会的核心内容,并探讨参会者从中能学到…...
docker 容器添加指定网络地址
docker 容器添加指定网络地址 在搭建halo博客时,准备让 halo、mysql8.1、nginx 三个容器在同一个网段中,并指定IP。 实现docker内部容器之间网络互通。 查看容器网络信息命令 docker inspect 容器名各容器部署成功后网络效果如下: nginx …...
后端怎样防止重复提交订单?
参考文章 通常我们可以在前端通过防抖和节流来解决短时间内请求重复提交的问题, 如果因网络问题、Nginx重试机制、微服务Feign重试机制或者用户故意绕过前端防抖和节流设置,直接频繁发起请求,都会导致系统防重请求失败,甚至导致后…...
数据结构之二叉搜索树
二叉搜索树 满足条件: 1.对于根节点:左子树中所有节点的值小于右子树中所有节点的值 2.任意节点的左右子树也是二叉搜索树,同样满足条件1 二叉搜索树的常用操作 我们将二叉搜索树封装为一个类 BinarySearchTree ,并声明一个成员变…...
《设计模式的艺术》笔记 - 抽象工厂模式
介绍 提供了一个创建一系列相关或相互依赖的对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。 在抽象工厂模式中,每个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品,这些产品构…...
7.11、Kali Linux中文版虚拟机安装运行教程
目录 一、资源下载准备工作 二、安装教程 三、kali linux换源 四、apt-get update 报错 一、资源下载准备工作 linux 中文版镜像历史版本下载:http://old.kali.org/kali-images/ 大家可以自行选择版本下载,本人下载的是2021版本 二、安装教程 打开vmvare wokst…...
Go+快速开始详细指南
Go快速开始 Go编程语言是为工程、STEM教育和数据科学设计的。 对于工程:用儿童能掌握的最简单的语言工作。对于STEM教育:学习一门可以在未来工作中使用的工程语言。对于数据科学:用同一种语言与工程师交流。 安装方法 现在,我们建议您从源代码安装Go。 注意:需…...
SQL:一行中存在任一指标就显示出来
当想要统计的两个指标不在一张表中时,需要做关联。但很多情况下,也没有办法保证其中一张表的维度是全的,用left join或right join可能会导致数据丢失。所以借助full join处理。 1)如,将下面的数据处理成表格中的效果&…...
【代码随想录06】454. 四数相加 II 383. 赎金信 15. 三数之和 18. 四数之和
目录 454. 四数相加 II题目描述做题思路参考代码 383. 赎金信题目描述做题思路参考代码 15. 三数之和题目描述参考代码 18. 四数之和题目描述参考代码 454. 四数相加 II 题目描述 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你…...
NodeJs 第十五章 session
Session代表服务器和客户端一次会话的过程。 在计算机科学领域来说,尤其是在网络领域,会话(session)是一种持久网络协议,在用户(或用户代理)端和服务器端之间创建关联,从而起到交换数据包的作用机制,session在网络协议…...
JRTP实时音视频传输(1)-必做的环境搭建与demo测试
1.需求 1)支持协议自动切换。在网络优的情况下使用TCP、网络差的情况下使用UDP,满足实时音视频传输需求, 2)支持RTCP ,流量控制,阻塞控制等。需要能支持RTCP,这样便能在这个基础上,…...
腿部臀部训练
坐式蹬腿器 100kg,是器械的极限了,也差不多是我的极限,深蹲是40kg,应该还可以加点,大腿外扩器55kg,没有尝试能不能做更重的,羡慕健身房里面的好身材的同学,自己得好好练 1.21健身房关…...
windows系统下docker软件中使用ubuntu发行版本的linux系统
1.软件下载 官网下载地址 下载安装之后,再去微软商店下载wsl软件,可以直接用,或者也可以使用命令行拉取(下面会讲) 2.在docker里面创建容器的两种方法 2.1.命令行创建 前言:输入 winr 打开命令行进行下面…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
