gin框架實現一個簡單的項目 ③


承接:gin框架封裝自己的路由 ②

對於一個項目來說,需要將各個功能模塊分開,也就是所謂的三層模型,這里介紹一下個人的做法:

contorller主要負責路由

model主要負責程序輸入輸出的數據

service主要負責數據處理

utils主要負責存放通用的方法,比如連接數據庫

代碼如下:

project->index.go

package main

import (
    c "project/controller"

    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()
    rr := c.GinRouter(r)

    // 監聽並在 0.0.0.0:8080 上啟動服務
    rr.Run(":8080")
}
View Code

project->controller->index.go

package controller

import (
    "fmt"
    "project/controller/second"

    "github.com/gin-gonic/gin"
)

func GinRouter(r *gin.Engine) *gin.Engine {
    rr := r.Group("/")
    rr.GET("/first", func(c *gin.Context) {
        fmt.Println("first .........")
    })
    rr = r.Group("/a")
    second.Routers(rr)
    return r
}
View Code

project->controller->second->index.go

package second

import (
    "fmt"
    ms "project/model/second"
    ss "project/services/second"

    "github.com/gin-gonic/gin"
)

func Routers(r *gin.RouterGroup) {
    rr := r.Group("")
    rr.POST("/second", Function)
    return
}
func Function(c *gin.Context) {
    var input ms.Input
    if err := c.BindJSON(&input); err != nil {
        fmt.Println(err)
    }
    ss.Function(c, input)
    return
}
View Code

project->model->second->index.go

package second

type Input struct {
    Id int `view:"id號" json:"id" from:"id"`
}
View Code

project->services->second->index.go

package second

import (
    "fmt"
    ms "project/model/second"

    "github.com/gin-gonic/gin"
)

func Function(c *gin.Context, input ms.Input) {
    fmt.Println("second .........,input:", input.Id)
    return
}
View Code

 


免責聲明!

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



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