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

对于一个项目来说,需要将各个功能模块分开,也就是所谓的三层模型,这里介绍一下个人的做法:

contorller主要负责路由

model主要负责程序输入输出的数据

service主要负责数据处理

utils主要负责存放通用的方法,比如连接数据库

代码如下:

project->index.go

  1. package main
  2.  
  3. import (
  4. c "project/controller"
  5.  
  6. "github.com/gin-gonic/gin"
  7. )
  8.  
  9. func main() {
  10. r := gin.Default()
  11. rr := c.GinRouter(r)
  12.  
  13. // 监听并在 0.0.0.0:8080 上启动服务
  14. rr.Run(":8080")
  15. }

project->controller->index.go

  1. package controller
  2.  
  3. import (
  4. "fmt"
  5. "project/controller/second"
  6.  
  7. "github.com/gin-gonic/gin"
  8. )
  9.  
  10. func GinRouter(r *gin.Engine) *gin.Engine {
  11. rr := r.Group("/")
  12. rr.GET("/first", func(c *gin.Context) {
  13. fmt.Println("first .........")
  14. })
  15. rr = r.Group("/a")
  16. second.Routers(rr)
  17. return r
  18. }

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

  1. package second
  2.  
  3. import (
  4. "fmt"
  5. ms "project/model/second"
  6. ss "project/services/second"
  7.  
  8. "github.com/gin-gonic/gin"
  9. )
  10.  
  11. func Routers(r *gin.RouterGroup) {
  12. rr := r.Group("")
  13. rr.POST("/second", Function)
  14. return
  15. }
  16. func Function(c *gin.Context) {
  17. var input ms.Input
  18. if err := c.BindJSON(&input); err != nil {
  19. fmt.Println(err)
  20. }
  21. ss.Function(c, input)
  22. return
  23. }

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

  1. package second
  2.  
  3. type Input struct {
  4. Id int `view:"id号" json:"id" from:"id"`
  5. }

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

  1. package second
  2.  
  3. import (
  4. "fmt"
  5. ms "project/model/second"
  6.  
  7. "github.com/gin-gonic/gin"
  8. )
  9.  
  10. func Function(c *gin.Context, input ms.Input) {
  11. fmt.Println("second .........,input:", input.Id)
  12. return
  13. }

gin框架实现一个简单的项目 ③的更多相关文章

  1. 用IntelliJ IDEA学习Spring--创建一个简单的项目

    这段时间想学习一下Spring,其实之前学过Spring,只是有些忘记了.而且之前学的时候是适用eclipse学习的,现在好像对IntelliJ这个工具使用挺多的,现在就学习一下这个工具的用法,顺便复 ...

  2. 《maven实战》笔记(2)----一个简单maven项目的搭建,测试和打包

    参照<maven实战>在本地创建对应的基本项目helloworld,在本地完成后项目结构如下: 可以看到maven项目的骨架:src/main/java(javaz主代码)src/test ...

  3. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  4. 使用go, gin, gorm编写一个简单的curd的api接口

    go 是一门非常灵活的语言,既具有静态语言的高性能,又有动态语言的开发速度快的优点,语法也比较简单,下面是通过简单的代码实现了一个简单的增删改查 api 接口 hello world 常规版 新建 d ...

  5. 利用VisualStudio单元测试框架举一个简单的单元测试例子

    本随笔很简单,不涉及mock和stub对象,而是只给出一个简单的利用Visual Studio单元测试框架的最简单例子.如果需要深入理解Unit Test的原理与艺术,请参考<The art o ...

  6. CodeIgniter框架——创建一个简单的Web站点(include MySQL基本操作)

    目标 使用 CodeIgniter 创建一个简单的 Web 站点.该站点将有一个主页,显示一些宣传文本和一个表单,该表单将发布到数据库表中. 按照 CodeIgniter 的术语,可将这些需求转换为以 ...

  7. 软件----- idea 配置创建一个简单javase项目

    1.显示工具栏和工具按钮,勾选上 如图,在左侧会增加对应的 2.设置项目结构,选择jdk 点击new  选择需要jdk 3.创建一个简单的java文件,和eclipse与myeslipse 差不多, ...

  8. vue-cli安装以及创建一个简单的项目(二)(vuex使用、发行一个简单的app)

    1.vuex的使用 vuex是vue的状态管理中心,vuex来保存我们需要管理的状态值,值一旦被修改,所有引用该值的地方就会自动更新,常用于: 1.多个视图依赖同一状态(l例:菜单导航) 2.来自不同 ...

  9. vue-cli安装以及创建一个简单的项目(一)(Node\npm\webpack简单使用)

    1.关系介绍 1.简单的说 Node.js 就是运行在服务端的 JavaScript. 2.NPM是随同NodeJS一起安装的包管理工具(新版的nodejs已经集成了npm),能解决NodeJS代码部 ...

随机推荐

  1. Python Log Viewer

    https://pythonhosted.org/logview/

  2. EINVRES Request to https://bower.herokuapp.com/packages/ failed with 502

    Bower install fails with 502 - Bad Gateway when downloading bower packages. For example bower instal ...

  3. jar启动脚本shell

    #!/bin/bash#这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=/opt/server/msp/health-api/health-2.0.2.jar#使用说明,用来提示输入 ...

  4. python中 将数字转化为人民币的形式

    def fn(args): """ 将金额转化为人民币模式,带逗号分隔,保留小数点两位,四舍五入 :param args: :return: ""&q ...

  5. 通用的调用WebService的两种方法。(调用别人提供的wsdl)(转)

    转载自:http://blog.sina.com.cn/s/blog_65933e020101incz.html1.调用WebService的Client端采用jax-ws调用WebService:流 ...

  6. shell脚本安装python、pip--交互式的

    首先把pip-.tgz 安装包放在 /usr/local 下面,按照顺序先安装pip,再安装python.不要先安装或只安装python,否则很容易出错, [root@bogon ~]# cat pi ...

  7. vue项目中导出Excel文件功能的前端代码实现

    在项目中遇到了两种不同情况, 1.get请求导出文件,实现起来相对简单 // 导出数据 exportData() { window.location.href = `/oes-content-mana ...

  8. 高级UI-RecyclerView间隔线添加

    上文讲到了RecyclerView的简单使用,知道RecycleView是怎么使用的了,那么这一节将基于上一届的内容继续改进,在ListView中很轻松就能实现的间隔线,在RecycleView中也需 ...

  9. nginx check健康检查

    nginx利用第三方模块nginx_upstream_check_module来检查后端服务器的健康情况 大家都知道,前段nginx做反代,如果后端服务器宕掉的话,nginx是不能把这台realser ...

  10. [转载]ftp和http区别

    本文围绕以下三个部分展开: 一.HTTP协议 二.FTP协议 三.HTTP与FTP的异同点 一.HTTP协议简介 1. 概念 HTTP: HyperText Transfer Protocal,超文本 ...