继续补充上面的gin构建微服务 具体到代码
时间: 2024-03-20 16:40:50 浏览: 49
【Go】Gin从入门到精通 实例代码01
好的,以下是一个使用Gin构建微服务的示例代码,其中包含了定义API接口、创建路由、编写处理程序函数和连接数据库等步骤的具体代码实现:
```go
package main
import (
"database/sql"
"fmt"
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql"
"log"
"net/http"
)
// 定义API接口
type User struct {
ID int `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
}
// 创建路由
func SetupRouter() *gin.Engine {
r := gin.Default()
// 获取单个用户信息
r.GET("/users/:id", GetUser)
// 获取所有用户信息
r.GET("/users", GetUsers)
return r
}
// 编写处理程序函数
func GetUser(c *gin.Context) {
id := c.Param("id")
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database")
if err != nil {
log.Fatal(err)
}
defer db.Close()
var user User
err = db.QueryRow("SELECT id, name, email FROM users WHERE id = ?", id).Scan(&user.ID, &user.Name, &user.Email)
if err != nil {
log.Fatal(err)
}
c.JSON(http.StatusOK, gin.H{
"user": user,
})
}
func GetUsers(c *gin.Context) {
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database")
if err != nil {
log.Fatal(err)
}
defer db.Close()
rows, err := db.Query("SELECT id, name, email FROM users")
if err != nil {
log.Fatal(err)
}
var users []User
for rows.Next() {
var user User
err = rows.Scan(&user.ID, &user.Name, &user.Email)
if err != nil {
log.Fatal(err)
}
users = append(users, user)
}
c.JSON(http.StatusOK, gin.H{
"users": users,
})
}
func main() {
// 创建数据库连接
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 测试数据库连接是否正常
err = db.Ping()
if err != nil {
log.Fatal(err)
}
// 创建Gin引擎
r := SetupRouter()
// 运行服务
err = r.Run(":8080")
if err != nil {
log.Fatal(err)
}
}
```
在这个示例中,我们定义了一个User结构体,表示用户信息。然后,我们创建了两个API接口:获取单个用户信息和获取所有用户信息。在处理程序函数中,我们连接了MySQL数据库,并使用SQL语句执行查询操作,获取用户信息。最后,我们使用Gin的JSON函数将响应消息作为JSON数据返回给客户端。
当您使用实际的数据库和API接口时,需要根据您的业务需求进行相应的修改。
阅读全文