在本篇文章中,我们将学习如何使用golang中的gin框架结合redis来实现一个Todo-List应用程序,具有CRUD(Create, Read, Update, Delete)功能。
环境配置
在开发这个Todo-List应用程序之前,我们需要安装Golang和Redis。你可以从官方网站上下载并安装Golang和Redis。在安装完成后,查找Redis的默认端口号(默认端口号为6379)并启动Redis。
构建gin应用程序
接下来,我们将创建使用gin框架的应用程序。
首先,在命令行中输入以下命令创建一个新的gin应用程序:
go mod init <project_name>
然后我们需要安装gin和redigo的依赖包,输入以下命令:
go get github.com/gin-gonic/gin
go get github.com/gomodule/redigo/redis
然后,我们可以在我们的项目中创建一个名为main.go的新的Go源代码文件,如下所示:
package main
import (
"encoding/json"
"fmt"
"log"
"github.com/gin-gonic/gin"
"github.com/gomodule/redigo/redis"
)
type Todo struct {
Title string `json:"title"`
}
func main() {
//连接redis服务器
conn, err := redis.Dial("tcp", ":6379")
if err != nil {
log.Fatal(err)
}
defer conn.Close()
//创建gin实例
r := gin.Default()
//路由
r.GET("/todo/:id", func(c *gin.Context) {
id := c.Param("id")
todo, err := redis.String(conn.Do("GET", id))
if err != nil {
c.JSON(500, gin.H{"error": err.Error()})
return
}
var todoObj Todo
json.Unmarshal([]byte(todo), &todoObj)
c.JSON(200, gin.H{"todo": todoObj})
})
r.PUT("/todo/:id", func(c *gin.Context) {
id := c.Param("id")
var todo Todo
c.Bind(&todo)
marshal, _ := json.Marshal(todo)
_, err := conn.Do("SET", id, string(marshal))
if err != nil {
c.JSON(500, gin.H{"error": err.Error()})
return
}
c.JSON(200, gin.H{"message": "success"})
})
r.DELETE("/todo/:id", func(c *gin.Context) {
id := c.Param("id")
_, err := conn.Do("DEL", id)
if err != nil {
c.JSON(500, gin.H{"error": err.Error()})
return
}
c.JSON(200, gin.H{"message": "success"})
})
r.Run(":8080")
fmt.Println("Todo-List application running on http://localhost:8080")
}
这段代码通过gin框架创建了一个具有三个不同路由的HTTP服务器。在这三个路由中,我们可以创建、查询和删除Todo列表项目。
- GET
"/todo/:id"
:根据指定的id参数,获取Redis中存储的相应Todo - PUT
"/todo/:id"
:创建一个新的Todo项,并将其保存到Redis数据库中 - DELETE
"/todo/:id"
:删除指定id的Todo项