gpt4 book ai didi

go - 在 Gin Framework 中开发的 REST API 的文件夹结构和包命名约定

转载 作者:数据小太阳 更新时间:2023-10-29 03:08:24 25 4
gpt4 key购买 nike

我是一名 NodeJS/PHP 开发人员,并且是 Go 的初学者。在做了一些研究之后,我为我的 REST API 项目提出了一个像这样的 MVC 风格的文件夹结构。

.
+- bin/
+- controllers/
+- userController/
+- userController.go
+- models/
+- userModel/
+- userModel.go
+- main.go

因此,我可以让我的代码看起来像这样:

import "github.com/gin-gonic/gin"
import "controllers/userController"

router := gin.Default()
router.GET("/user", userController.handleSomeLogicHere)

但是后来发现GoLang官网不建议使用驼峰式和蛇式的方式打包。

我想知道在 Go 中使用 MVC 是否不是一个好习惯(因为我知道有人建议基于模块/依赖项的文件夹结构)?

或者我应该将所有 Controller 和模型更改为一个词,例如 usercontroller 或 userctrl(但对我来说似乎有点连线)?

最佳答案

我会稍微更改一下您的文件夹结构。我没有为每个 Controller 单独的包,而是让它们成为 controllers 包的一部分(虽然我在谈论 Controller ,但同样的思路也适用于模型)。

.
+- bin/
+- controllers/
+- user.go
+- models/
+- user.go
+- main.go

为此,我还会稍微更改代码结构以像这样实例化 Controller 实例:

import "models"
import "controllers"
import "github.com/gin-gonic/gin"

userController := controllers.UserController{
Users: models.UserModel{}, //DO your stuff here
}

router := gin.Default()
router.GET("/user", userController.GetUser)

您可以随心所欲地为每个 Controller 创建一个新包,但它很容易增长为大量包。通过将所有 Controller 放在一个包中,可以更轻松地使用它。

注意:随着应用的增长,可能需要创建子包。我能想到的一种情况是将所有仅限管理员的 Controller 放在 controllers/admin 包中。

关于go - 在 Gin Framework 中开发的 REST API 的文件夹结构和包命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57024470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com