使用 Gorilla Mux 和 CockroachDB 编写可维护 REST
发布时间:2022-08-02 11:32:47 所属栏目:云计算 来源:互联网
导读:一、前言 本文将使用功能强大的 Gorilla Mux、GORM 和 CockroachDB 编写可维护 RESTful API。利用到的 Go 语言相关技术有: Gorilla/Mux:功能强大的 URL 路由器和调度组件。 CockroachDB:开源,云原生分布式 SQL 数据库系统。 GORM:神奇的 ORM 库。 运行
一、前言 本文将使用功能强大的 Gorilla Mux、GORM 和 CockroachDB 编写可维护 RESTful API。利用到的 Go 语言相关技术有: Gorilla/Mux:功能强大的 URL 路由器和调度组件。 CockroachDB:开源,云原生分布式 SQL 数据库系统。 GORM:神奇的 ORM 库。 运行环境: Ubuntu 18.04.6 LTS。 开发工具:Visual Studio Code。 测试工具:APIfox:Apifox = Postman + Swagger + Mock + JMeter。 二、CockroachDB 介绍 #夏日挑战赛# 使用 Gorilla Mux 和 CockroachDB 编写可维护 REST-开源基础软件社区 CockrocreDB 是一个云原生分布式 SQL 数据库,旨在构建,扩展和管理现代数据密集型应用程序。 官方介绍翻译如下: CockroachDB 是一个分布式关系型数据库,建立在事务性和强一致性键值存储之上,具有水平扩展、高可用、支持强一致性 ACID 事务隔离级别的特点,并提供统一的 SQL API 用于结构化、操作和查询数据。 简单来说,CockroachDB 充分利用了上一代数据库系统的优势、SQL 的强大能力以及关系数据模型和现代云原生法则,成为了一个与其他基于 SQL 的事务型数据库广泛兼容的数据库系统。 CockroachDB 对 Go 也有很好的支持,比如 pgx、pg、GORM 和 upper/db。 1、下载安装 针对最新版的 CockroachDB Linux 下载,点此处 可以看官方的教程写的很详细,这里本文将跟着照做一次。(选择其他系统,同理)。 下载适用于 Linux 的 CockroachDB 包和其支持库,并将二进制文件复制到您的 PATH 中,以便您可以从任何 shell 执行 cockroach 命令: 复制 curl https://binaries.cockroachdb.com/cockroach-v22.1.3.linux-amd64.tgz | tar -xz && sudo cp -i cockroach-v22.1.3.linux-amd64/cockroach /usr/local/bin/ 1. 如图所示: #夏日挑战赛# 使用 Gorilla Mux 和 CockroachDB 编写可维护 REST-开源基础软件社区 CockroachDB 使用GEOS 库的定制版本。默认情况下,CockroachDB 在/usr/local/lib/cockroach 或 CockroachDB 二进制文件当前目录的lib 子目录中查找外部链接库。 所以,您可以将二进制文件复制到您的路径中,以便您可以从任何目录执行 Cockroach 命令: 复制 sudo cp -R cockroach-v22.1.3.linux-amd64/* /usr/local/bin 1. 确保刚刚安装的 cockroach 已经成功安装: 复制 which cockroach 1. #夏日挑战赛# 使用 Gorilla Mux 和 CockroachDB 编写可维护 REST-开源基础软件社区 启动使用启动临时本地内存集群,使用cockroach demo 命令: #夏日挑战赛# 使用 Gorilla Mux 和 CockroachDB 编写可维护 REST-开源基础软件社区 如果能看到上图,说明 CockroachDB 安装成功,恭喜~ 2、使用本地集群 官方提供两种方式利用 GORM 使用 CockroachDB:一种是 CockroachDB Serverless(测试阶段),另一种是使用本地集群。 #夏日挑战赛# 使用 Gorilla Mux 和 CockroachDB 编写可维护 REST-开源基础软件社区 第一种方式需要注册一个 CockroachDB 云账号,然后按照官方提示创建链接。 本文将使用第二种方式: 运行cockroach start-single-node 命令: 复制 cockroach start-single-node --advertise-addr 'localhost' --insecure 1. 通过增加 --insecure 参数启动了一个不安全的单节点群集。 记录下 SQL Shell 中欢迎文本中以下连接信息: 复制 CockroachDB node starting at 2022-07-14 13:21:35.179273246 +0000 UTC (took 1.6s) build: CCL v22.1.3 @ 2022/07/11 14:04:38 (go1.17.11) webui: http://localhost:8080 sql: postgresql://root@localhost:26257/defaultdb?sslmode=disable sql (JDBC): jdbc:postgresql://localhost:26257/defaultdb?sslmode=disable&user=root RPC client flags: cockroach <client cmd> --host=localhost:26257 --insecure logs: /home/yuzhou/cockroach-data/logs temp dir: /home/yuzhou/cockroach-data/cockroach-temp2801178939 external I/O path: /home/yuzhou/cockroach-data/extern store[0]: path=/home/yuzhou/cockroach-data storage engine: pebble clusterID: 43919fea-32cd-48f9-b585-713731d43ee9 status: restarted pre-existing node nodeID: 1 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 其中,postgresql://root@localhost:26257/defaultdb?sslmode=disable ,通过 SQL 连接字符串连接我们的 CockroachDB 集群中。 PS:这条信息需要加入到后续的数据库连接 datebase.go 文件中,请注意。 三、项目介绍 1、项目功能 本文创建一个应用是一个简单的 RESTful API 服务器:线上书店,它将公开书籍的访问和操作,主要包括如下功能: 创建一本书籍 获取书籍清单 获取一本书籍信息 更新已有书籍信息 删除一本书籍 2、API 接口规范 为了实现上述的功能,我们的应用需要提供给外界如下的 API 接口规范: 创建一本书籍:通过/book 响应有效的 POST 请求。 获取书籍清单:通过/books 响应有效的 GET 请求。 获取一本书籍:通过/book/{id} 响应对应的 GET 请求。 更新一本书籍:通过/book/{id} 响应对应的 PUT 请求。 删除一本书籍:通过/book/{id} 响应对应的 DELETE 请求。 通过 {id} 能够有效确定某本书籍。 (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |