gin框架长连接_教程:使用 go 的 gin 和 gorm 框架来构建 RESTful API 微服务

本文介绍如何使用Golang的gin-gonic框架和gorm ORM来构建一个Todo应用的RESTful API微服务。内容包括安装依赖、定义路由、配置数据库连接、数据结构、CRUD操作及Postman测试API。强调了数据库安全性和输入验证的重要性。
摘要由CSDN通过智能技术生成

be3cfc37b3b572fe140d6c013cdb4778.png
文章转发在专业的 Go 开发者社区,原始链接: https:// learnku.com/golang

今天我将用 golang 编程语言来为我们的 Todo 应用搭建一套简单的 API。我将会使用 Golang 中简便/快捷的 gin-gonic 框架配合用于操作我们数据库,优雅漂亮的 ORM gorm 来完成这项工作。要想安装这些包,你应当在工作目录 $GOPATH/src 下运行如下命令:

$ go get gopkg.in/gin-gonic/gin.v1
$ go get -u github.com/jinzhu/gorm
$ go get github.com/go-sql-driver/mysql

在一般的 crud 应用中我们需要如下这样的 API :

  1. POST todos/
  2. GET todos/
  3. GET todos/{id}
  4. PUT todos/{id}
  5. DELETE todos/{id}

我们开始编码吧,去到你的 $GOPATH/src 目录下,创建一个 todo 文件夹。在 todo 文件夹下创建一个名为 main.go 的文件。引入 "gin framework" 到我们的项目中,然后在 main 方法中创建一个类似下面的路由。我比较倾向把 api 前缀写成类似 "api/v1/" 这样,这就是我们使用 Group 方法的原因。

package main

import (
       "github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
v1 := router.Group("/api/v1/todos")
 {
  v1.POST("/", createTodo)
  v1.GET("/", fetchAllTodo)
  v1.GET("/:id", fetchSingleTodo)
  v1.PUT("/:id", updateTodo)
  v1.DELETE("/:id", deleteTodo)
 }
 router.Run()
}

我们已经创建了五个路由,它们对应的功能处理函数类似 createTodo, fetchAllTodo 等这样。接下来我们会讨论它们。

现在我们需要配置数据库连接。使用数据库前需要引入 gorm 和 mysql dialects 2个软件包。 如下代码:

package main

import (
       "github.com/gin-gonic/gin"
       "github.com/jinzhu/gorm"
       _ "github.com/jinzhu/gorm/dialects/mysql"
)

var db *gorm.DB
func init() {
 //open a db connection
 var err error
 db, err = gorm.Open("mysql", "root:12345@/demo?charset=utf8&parseTime=True&loc=Local")
 if err != nil {
  panic("failed to connect database")
 }
//Migrate the schema
 db.AutoMigrate(&todoModel{})
}

上面代码中 mysql 是数据库驱动,root 是数据库用户名,12345是密码,demo 则是数据库名称。请修改你的数据库连接信息即可。

接下来我们开始编写建立数据库连接相关的代码。首先我们创建2个结构体,命名为 todoModeltransformedTodo ,第一个结构体代表原始的 Todo 数据库字段,第二个结构体用来定义向 api 返回的字段。我们之所以在第二个结构体中重新定义返回的字段主要考虑到数据库中数据的安全性,我们不希望将数据库中的原始字段名(如:updated_at , created_at)直接暴露客户端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值