对于初学者而言,最合适的 go 框架如下:gin: 轻量级且高性能的 веб-фреймворк, 适用于创建 restful apimongodb: 可扩展且灵活的 nosql 数据库,适用于文档存储
为初学者量身定制的 Go 框架介绍
背景
Go 语言以其出色的并发性、健壮性和易用性而闻名。借助其丰富的框架生态系统,Go 开发人员可以轻松实现各种应用程序。本文旨在为初学者介绍适用于不同场景的几个流行 Go 框架。
实用案例 :Gin + MongoDB
Gin 是一个轻量级且高性能的 веб-фреймворк для Go,以其易用性、高性能和对 RESTful API 的支持而著称。
MongoDB 是一个流行的 NoSQL 数据库,因其可扩展性、灵活性和文档存储而受到欢迎。
下面的代码展示了一个简单的 Gin + MongoDB 应用程序,演示如何创建 API 端点来创建和获取用户:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import (
"context"
"encoding/json"
"fmt"
"io/ioutil"
"<a style=color:f60; text-decoration:underline; href="https://www.zvvq.cn/zt/15841.html" target="_blank">git</a>hub.com/gin-gonic/gin"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
// 连接到 MongoDB
client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("mongodb://localhost:27017"))
if err != nil {
panic(err)
}
db := client.Database("mydb")
usersCollection := db.Collection("users")
// 创建路由
router := gin.Default()
// 创建用户
router.POST("/users", func(c gin.Context) {
var user User
if err := c.ShouldBindJSON(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
insertResult, err := usersCollection.InsertOne(context.TODO(), user)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"id": insertResult.InsertedID})
})
// 获取用户
router.GET("/users/:id", func(c gin.Context) {
id := c.Param("id")
filter := bson.M{"_id": bson.M{"$eq": id}}
result := usersCollection.FindOne(context.TODO(), filter)
var user User
if err := result.Decode(&user); err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "not found"})
return
}
c.JSON(http.StatusOK, user)
})
// 运行服务器
router.Run(":8080")
}
type User struct {
ID string `json:"id"`
Name string `json:"name"`
Age int `json:"age"`
}
以上就是为初学者量身定制的 Go 框架介绍的详细内容,更多请关注其它相关文章!