在 Gin 框架中开发的 REST API 的文件夹结构和包命名约定

我是一名 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官网的说法,不建议使用camel case和snake case进行封装。


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


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


狐的传说
浏览 101回答 1
1回答

慕容708150

我会稍微改变一下你的文件夹结构。我不会为每个控制器提供单独的包,而是将它们作为包的一部分controllers(当我谈论控制器时,同样的思路也适用于模型)。.+- bin/+- controllers/   +- user.go+- models/   +- user.go+- main.go为此,我还会稍微更改代码结构以实例化控制器实例,如下所示: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)您可以按照自己的意愿为每个控制器创建一个新包,但它很容易会增长为大量包。通过将所有控制器保存在一个包中,可以更轻松地使用。注意:随着您的应用程序的增长,可能需要创建子包。我能想到的一种情况是将所有仅管理控制器放在一个controllers/admin包中。
打开App,查看更多内容
随时随地看视频慕课网APP