在 Golang 中构建 CRUD 应用程序(上)

简介: 在本教程中,我们将在 Golang 中构建一个 CRUD 应用程序。我们将使用 gorilla/mux 库作为 api 和 PostgreSQL DB 来存储数据。

在本教程中,我们将在 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


3. joho/godotenv

我们将使用 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 表的表示。

相关文章
|
运维 监控 Cloud Native
一行代码都不改,Golang 应用链路指标日志全知道
本文将通过阿里云开源的 Golang Agent,帮助用户实现“一行代码都不改”就能获取到应用产生的各种观测数据,同时提升运维团队和研发团队的幸福感。
868 152
|
人工智能 开发框架 数据可视化
Eino:字节跳动开源基于Golang的AI应用开发框架,组件化设计助力构建AI应用
Eino 是字节跳动开源的大模型应用开发框架,帮助开发者高效构建基于大模型的 AI 应用。支持组件化设计、流式处理和可视化开发工具。
2579 27
|
算法 安全 测试技术
golang 栈数据结构的实现和应用
本文详细介绍了“栈”这一数据结构的特点,并用Golang实现栈。栈是一种FILO(First In Last Out,即先进后出或后进先出)的数据结构。文章展示了如何用slice和链表来实现栈,并通过golang benchmark测试了二者的性能差异。此外,还提供了几个使用栈结构解决的实际算法问题示例,如有效的括号匹配等。
436 1
golang 栈数据结构的实现和应用
|
前端开发 中间件 Go
实践Golang语言N层应用架构
【10月更文挑战第2天】本文介绍了如何在Go语言中使用Gin框架实现N层体系结构,借鉴了J2EE平台的多层分布式应用程序模型。文章首先概述了N层体系结构的基本概念,接着详细列出了Go语言中对应的构件名称,包括前端框架(如Vue.js、React)、Gin的处理函数和中间件、依赖注入和配置管理、会话管理和ORM库(如gorm或ent)。最后,提供了具体的代码示例,展示了如何实现HTTP请求处理、会话管理和数据库操作。
369 1
|
中间件 Go 数据处理
应用golang的管道-过滤器架构风格
【10月更文挑战第1天】本文介绍了一种面向数据流的软件架构设计模式——管道-过滤器(Pipe and Filter),并通过Go语言的Gin框架实现了一个Web应用示例。该模式通过将数据处理流程分解为一系列独立的组件(过滤器),并利用管道连接这些组件,实现了模块化、可扩展性和高效的分布式处理。文中详细讲解了Gin框架的基本使用、中间件的应用以及性能优化方法,展示了如何构建高性能的Web服务。
600 1
|
存储 监控 Go
面向OpenTelemetry的Golang应用无侵入插桩技术
文章主要讲述了阿里云 ARMS 团队与程序语言与编译器团队合作研发的面向OpenTelemetry的Golang应用无侵入插桩技术解决方案,旨在解决Golang应用监控的挑战。
1317 9
|
存储 设计模式 前端开发
|
监控 Java 测试技术
|
存储 Prometheus 监控
Golang 搭建 WebSocket 应用(六) - 监控
Golang 搭建 WebSocket 应用(六) - 监控
247 3
|
人工智能 缓存 安全
Golang 搭建 WebSocket 应用(七) - 性能、可用性
Golang 搭建 WebSocket 应用(七) - 性能、可用性
293 1

热门文章

最新文章

推荐镜像

更多