亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 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 關注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號