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")
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM