在本教程中,我们将在 Golang 中构建一个 CRUD 应用程序。我们将使用 gorilla/mux
库作为 api 和 PostgreSQL DB 来存储数据。
在 $GOPATH 之外创建一个新的项目目录 go-postgres。
在 go-postgres 项目中打开终端。实例化 go 模块。
go mod init go-postgres
安装依赖
我们将在这个项目中使用 3 个包,在 go-postgres 项目中打开终端。
1. gorilla/mux router
gorilla/mux
包实现了一个请求路由器和调度程序,用于将传入请求与其各自的处理程序匹配。
go get -u github.com/gorilla/mux
2. lib/pq driver
Go 的 database/sql
包的纯 Go postgres 驱动程序。
go get github.com/lib/pq
我们将使用 godotenv 包来读取 .env
文件。 .env
文件用于保存环境变量。环境变量用于保护敏感数据的安全。
go get github.com/joho/godotenv
现在,打开 go.mod
并检查。所有已安装的依赖项都列出了已安装的版本。
与此类似,版本可以不同。
module go-postgres require ( github.com/gorilla/mux v1.7.4 github.com/joho/godotenv v1.3.0 github.com/lib/pq v1.3.0 )
安装 Postgres
PostgreSQL 是一个功能强大的开源对象关系数据库系统。它以可靠性、功能稳健性和性能而闻名。
创建实例后。现在,我们必须创建一个表。转到 ElephantSQL 中的 Browser 选项卡并粘贴下面的创建表查询并执行它。我们使用 SERIAL 类型作为用户 ID。 SERIAL 每次插入操作都会自动递增。
CREATE TABLE users ( userid SERIAL PRIMARY KEY, name TEXT, age INT, location TEXT );
项目目录结构
该项目分为 4 个部分,以保持代码模块化和干净。
目录结构为:
|- go-postgres |- middleware |- handlers.go |- models |- models.go |- router |- router.go |- .env |- main.go
模型
模型包将存储数据库模式。我们将使用 struct 类型来表示或映射 golang 中的数据库模式。
在 go-postgres
项目中创建一个新的文件夹模型。
在模型中创建一个新文件 models.go
并粘贴以下代码。
package models // User schema of the user table type User struct { ID int64 `json:"id"` Name string `json:"name"` Location string `json:"location"` Age int64 `json:"age"` }
User 结构是我们在上面创建的 users 表的表示。