为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
狐的传说 2023-07-04 14:50:20
我是一名 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 (但这对我来说似乎有点连接)?
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

我会稍微改变一下你的文件夹结构。我不会为每个控制器提供单独的包,而是将它们作为包的一部分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包中。


查看完整回答
反对 回复 2023-07-04
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信