使用 Gin 框架在 GoLang 中构建 API 服务

使用 Gin 框架在 GoLang 中构建 API 服务

今天我将向你展示如何在 Go 中构建一个简单的 API 服务。我们的项目演示将是一个简单的作者和他们的图书库项目。

第一步:

首先,我们需要初始化我们的项目。我在用 JetBrains GoLand .

GoLand welcome screen

GoLand New Project

Initialized project

第二步:

现在我们需要安装所需的依赖项。在终端中运行以下命令:

去获取 -u github.com/gin-gonic/gin

第三步:

初始化 Gin 框架以监听 8080 端口。

// main.go 包主 进口 (
“github.com/gin-gonic/gin”
)

功能主要(){
路由器 := gin.Default()
router.Run("localhost:8080")
}

第四步:

现在我们需要为我们的后端服务创建模型。在这个演示中,我们只需要 Book 和 Author 模型。创建一个名为的新目录 模型 并在该文件夹中创建 作者.gobook.go 文件。

// 模型/book.go 封装模型

类型书结构{
ID 字符串json:"id"
名称字符串json:"name"
} // 模型/作者.go 封装模型

类型作者结构{
ID 字符串json:"id"
名称字符串json:"name"
书籍* []书籍json:“书籍”
}

第五步:

现在我们需要创建一个控制器来从 URL 端点访问我们的数据。

创建一个新目录, 控制器 , 并在一个新文件中 author_controller.go .

现在,我们将只创建一个骨架 作者控制器 并暂时跳过业务逻辑。

// 控制器/author_controller.go 包控制器

进口 (
“github.com/gin-gonic/gin”
)

func AuthorController(路由器 *gin.Engine) {
路径:=“/api/作者” router.GET(路径,函数(c *gin.Context){ }) router.GET(path+"/:id", func(c *gin.Context) { })
}

现在我们需要进入 main.go 文件并将我们的控制器连接到我们之前创建的路由器变量。

// main.go 进口 (
“作者-api/控制器”
“github.com/gin-gonic/gin”
) 功能主要(){
路由器 := gin.Default()
controller.AuthorController(router) // 添加这一行
路由器。运行(“本地主机:8082”)
}

第六步:

现在我们将实现我们的业务逻辑。我们需要将数据存储在某个地方,但在本教程中,我们不会为了简单起见而使用任何数据库。我们的数据将存储在内存中。

// 模型/作者.go var stephenKingBooks = []书{
书{ID:“1”,名称:“局外人”},
书{ID:“2”,名称:“写作”},
}

var 作者 = []作者{
Author{ID: "1", Name: "Stephen King", Books: &stephenKingBooks},
}

现在回到 author_controller.go .

// 控制器/author_controller.go ... router.GET(路径,函数(c *gin.Context){
作者 := model.Authors
c.IndentedJSON(http. 状态正常 , 作者)
}) ...

代码说明:

  1. 我们获取数据并将其存储在 作者 多变的

  2. 我们以状态 ok (200) 和格式化(缩进)JSON 响应

    // 控制器/author_controller.go ... router.GET(path+"/:id", func(c *gin.Context) {
    authorId := c.Param("id")
    var author model.Author
    对于 _, previewAuthor := range model.Authors {
    如果 previewAuthor.ID == authorId {
    作者 = 预览作者
    }
    }
    if (model.Author{}) == 作者 {
    c.IndentedJSON(http. 状态未找到 , 无)
    } 别的 {
    c.IndentedJSON(http. 状态正常 , 作者)
    }
    }) ...

代码说明:

  1. 我们检索通过 URL 参数传递的 ID
  2. 我们遍历作者并检索与传递给我们请求的 ID 相同的作者
  3. 如果没有具有相同 ID 的作者,我们会以 status not found (404) 响应并返回 nil
  4. 如果存在具有相同 ID 的作者,我们将返回状态 ok (200) 和作者的对象

第七步:

如果你大老远来,我有好消息。我们结束了!

现在打开您的终端(确保您与 main.go 文件)并执行 去运行 main.go 命令来运行我们的项目。

我们的后端服务已上线 本地主机:8080 我们的端点位于 本地主机:8080/api/作者

完整的源代码在我的 GitHub .

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/5832/09540100

posted @ 2022-09-01 00:12  哈哈哈来了啊啊啊  阅读(493)  评论(0)    收藏  举报