
本教程演示如何使用Go语言、Gin框架和PostgreSQL数据库构建一个简单的CRUD (创建、读取、更新、删除) 应用。最终,您将得到一个可以管理PostgreSQL数据库中数据的基本应用。
目录
1. 简介
我们将使用Gin (一个轻量级的Go Web框架) 构建API端点。应用将连接到PostgreSQL数据库,并使用pgx驱动程序进行数据库交互。
立即学习“go语言免费学习笔记(深入)”;
本教程面向初学者,假设您已具备Go语言和REST API的基础知识。
2. 前提条件
开始之前,请确保您的系统已安装以下软件:
3. 项目结构
项目的文件夹结构如下:
<code>crud-app/ ├── main.go # 应用入口 ├── config/ │ └── database.go # 数据库连接配置 ├── controllers/ │ └── item.go # "item"资源的CRUD处理程序 ├── models/ │ └── item.go # "item"数据库模型 ├── routes/ │ └── routes.go # API路由定义 ├── go.mod # Go模块文件 └── go.sum # 依赖文件</code>
此结构简单易扩展。您可以稍后添加更多资源(例如“用户”或“订单”),而不会影响项目结构。
4. 项目设置
首先,创建项目文件夹并初始化Go模块:
<code class="bash">mkdir crud-app cd crud-app go mod init github.com/yourusername/crud-app</code>
然后,安装必要的包:
<code class="bash">go get github.com/gin-gonic/gin go get github.com/jackc/pgx/v5</code>
5. 创建数据库和表
创建一个PostgreSQL数据库和一个表,例如名为“items”的表:
本书是全面讲述PHP与MySQL的经典之作,书中不但全面介绍了两种技术的核心特性,还讲解了如何高效地结合这两种技术构建健壮的数据驱动的应用程序。本书涵盖了两种技术新版本中出现的最新特性,书中大量实际的示例和深入的分析均来自于作者在这方面多年的专业经验,可用于解决开发者在实际中所面临的各种挑战。
466
<code class="sql">CREATE DATABASE crud_app;
\c crud_app
CREATE TABLE items (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
price NUMERIC(10, 2)
);</code>6. 编写CRUD处理程序
在config/database.go中:
<code class="go">package config
import (
"database/sql"
"fmt"
"log"
_ "github.com/jackc/pgx/v5/stdlib"
)
var db *sql.DB
func ConnectDatabase() {
var err error
dsn := "postgres://username:password@localhost:5432/crud_app"
db, err = sql.Open("pgx", dsn)
if err != nil {
log.Fatalf("无法连接到数据库: %v", err)
}
fmt.Println("数据库连接成功!")
}</code>请使用您的PostgreSQL用户名和密码更新dsn字符串。
在models/item.go中:
<code class="go">package models
type Item struct {
ID int `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Price float64 `json:"price"`
}</code>在controllers/item.go中:
<code class="go">package controllers
import (
"crud-app/config"
"crud-app/models"
"github.com/gin-gonic/gin"
"net/http"
)
// 创建新的item
func CreateItem(c *gin.Context) {
var item models.Item
if err := c.ShouldBindJSON(&item); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
query := "INSERT INTO items (name, description, price) VALUES ($1, $2, $3) RETURNING id"
err := config.db.QueryRow(query, item.Name, item.Description, item.Price).Scan(&item.ID)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "创建item失败"})
return
}
c.JSON(http.StatusCreated, item)
}</code>您可以编写类似的处理程序来读取、更新和删除项目。
在routes/routes.go中:
<code class="go">package routes
import (
"crud-app/controllers"
"github.com/gin-gonic/gin"
)
func SetupRoutes(router *gin.Engine) {
router.POST("/items", controllers.CreateItem)
// 添加更多路由用于读取、更新、删除
}</code>在main.go中:
<code class="go">package main
import (
"crud-app/config"
"crud-app/routes"
"github.com/gin-gonic/gin"
)
func main() {
config.ConnectDatabase()
r := gin.Default()
routes.SetupRoutes(r)
r.Run(":8080") // 在8080端口启动服务器
}</code>7. 测试API
启动服务器:
<code class="bash">go run main.go</code>
使用Postman或curl测试端点。例如,创建一个项目:
POST http://localhost:8080/items
请求体:
<code class="json">{
"name": "Laptop",
"description": "一台强大的笔记本电脑",
"price": 1200.50
}</code>8. 总结
恭喜!您已成功使用Go、Gin和PostgreSQL构建了一个基本的CRUD应用。此结构易于扩展,您可以添加更多功能,例如身份验证、日志记录或中间件。 如有需要更详细的步骤或附加功能,请随时提出!
以上就是如何使用Golang,Gin和Postgresql构建CRUD应用程序的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号