gin项目架构
01 文件目录
gin_demo
├── app
│ ├── shop
│ │ ├── model.go
│ │ ├── views.go
│ │ └── urls.go
│ └── user
│ ├── models.go
│ ├── urls.go
│ └── router.go
├── go.mod
├── settings
├── main.go
└── routers
└── urls.go
文件和包作用解析:
1 app
文件夹:放一个个app(包)
2 settings
文件夹下放项目的配置数据
3 main.go
文件是主文件
4 routers
文件夹下的urls.go
文件,放主路由,也就是对应每个app的路由组
5 每个app下的文件:model.go
数据库相关,gorm映射表;views.go
视图函数,业务逻辑;urls.go
具体的url和函数的对应逻辑
02 文件代码示例
- main.go文件
主文件
只放启动项目的初始
package main
import "gin/router"
func main() {
router.MainRun()
}
- routers下的urls.go文件
package router
import (
"gin/apps/shop" // 每一个对应的app包
"gin/apps/user"
"github.com/gin-gonic/gin"
)
var rMain = gin.Default()
func MainRun() {
include("/user", user.Urls) // Urls每个app的包用同一个方法,去处理路由组下的具体url对应的函数
include("/shop", shop.Urls)
rMain.Run()
}
func include(url string, urls func(*gin.RouterGroup)) {
group := rMain.Group(url) // 路由组
urls(group) // 把路由组对象传给对应的app下的包
}
注意:
每个app中处理url和对应函数的文件,要同名urls.go
,且处理方法也要同名Urls
- app下的
urls.go
文件
package user
import (
"github.com/gin-gonic/gin"
)
func Urls(url *gin.RouterGroup) {
url.GET("/id", UserName)
}
- app下的
views.go
文件
package user
import "github.com/gin-gonic/gin"
func UserName(request *gin.Context) {
request.JSON(200, "ok")
}