zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    mysql explain语句各项含义
    group_concat用法以及字符串太长显示不全
    合并两个word文档,保持样式不变
    读取word模板,填充数据后导出
    java获取配置文件信息
    mysql5.6免安装使用
    时间格式转换
    Mysql中(@i:=@i+1)的作用
    SVN服务器搭建和使用(一)
    按需讲解之Supervisor
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/11910902.html
Copyright © 2011-2022 走看看