承接: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")
}

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
}

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
}

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

package second

type Input struct {
Id int `view:"id号" json:"id" from:"id"`
}

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
}

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. Linux笔记整理

    [随时更新] ps aux | grep mysql 检测MySQL服务是否在运行 Linux查看某个进程的线程:ps -T -p <pid> 列出了由进程号为<pid>的进程 ...

  2. LinearGradient线型渐变效果

    public LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, TileM ...

  3. SIT测试 和 UAT测试

    在企业级软件的测试过程中,经常会划分为三个阶段——单元测试,SIT和UAT,如果开发人员足够,通常还会在SIT之前引入代码审查机制(Code Review)来保证软件符合客户需求且流程正确.下面简单介 ...

  4. 005-多线程-集合-Map-ConcurrentSkipListMap

    一.概述 ConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景. ConcurrentSkipListMap和TreeMap,它们虽然都是有序的哈希表.但是,第一,它 ...

  5. osgText::Text osg字体

    #ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include<iostream> #include <osgV ...

  6. 遍历List集合删除元素的出现报错

    遍历List集合删除元素的出现报错   遍历List集合删除元素的时候会发生索引越界异常或内容遍历不全等问题. 例子: List<String> al = new ArrayList< ...

  7. Linux 系统中部署 LNMP 高可用负载均衡架构集群实现动态博客

    (一)设计思路 高可用:keepalived 解决方案 负载均衡:(lvs)DR做轮询,需要一个调度器,后端节点两个(部署nginx动态博客),通过一个vip去访问动态博客 后端节点需要部署动态博客作 ...

  8. (九)会话跟踪技术之Cookie

    --部分摘自孤傲苍狼博客~ 一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再 ...

  9. EOS 资源汇总

    EOS 资源汇总     A curated list of EOS Ecosystem by [SuperONE](https://superone.io/) EOS 主网 超级节点 https:/ ...

  10. Learning to Rank:pointwise, pairwise, listwise 总结

    值得看: 刘铁岩老师的<Learning to Rank for Information Retrieval>和李航老师的<Learning to rank for informat ...