对于初学者而言,最合适的 go 框架如下:gin: 轻量级且高性能的 веб-фреймворк, 适用于创建 restful apimongodb: 可扩展且灵活的 nosql 数据库,适用于文档存储
为初学者量身定制的 Go 框架介绍
背景
Go 语言以其出色的并发性、健壮性和易用性而闻名。借助其丰富的框架生态系统,Go 开发人员可以轻松实现各种应用程序。本文旨在为初学者介绍适用于不同场景的几个流行 Go 框架。
实用案例:Gin + MongoDB
Gin 是一个轻量级且高性能的 веб-фреймворк для Go,以其易用性、高性能和对 RESTful API 的支持而著称。
MongoDB 是一个流行的 NoSQL 数据库,因其可扩展性、灵活性和文档存储而受到欢迎。
下面的代码展示了一个简单的 Gin + MongoDB 应用程序,演示如何创建 API 端点来创建和获取用户:
import (
"context"
"encoding/json"
"fmt"
"io/ioutil"
"<a style='color:#f60; text-decoration:underline;' href="https://www.php.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"`
}