gin 实战教程-项目结构介绍

1.概述

实际项目业务功能和模块会很多,我们不可能把所有代码都写在一个go文件里面或者写在一个main入口函数里面;我们需要对项目结构做一些规划,方便维护代码以及扩展。

Gin框没有对项目结构做出限制,我们可以根据自己项目需要自行设计。

2.项目结构

  • 有视图模板
├── conf                    #项目配置文件目录
│   └── config.toml         #大家可以选择自己熟悉的配置文件管理工具包例如:toml、xml等等
├── controllers             #控制器目录,按模块存放控制器(或者叫控制器函数),必要的时候可以继续划分子目录。
│   └── user.go
├── models                  #模型目录,负责项目的数据存储部分,例如各个模块的Mysql表的读写模型。
│   ├── food.go
│   └── user.go
├── static                  #静态资源目录,包括Js,css,jpg等等,可以通过Gin框架配置,直接让用户访问。
│   ├── css
│   ├── images
│   └── js
├── logs                    #日志文件目录,主要保存项目运行过程中产生的日志。
└── views                   #视图模板目录,存放各个模块的视图模板,当然有些项目只有api,是不需要视图部分,可以忽略这个目录
│   └── index.html
├── main.go                 #项目入口,这里负责Gin框架的初始化,注册路由信息,关联控制器函数等。
  • api开发
├── conf                    #项目配置文件目录
│   └── config.toml         #大家可以选择自己熟悉的配置文件管理工具包例如:toml、xml等等
├── controllers             #控制器目录,按模块存放控制器(或者叫控制器函数),必要的时候可以继续划分子目录。
│   └── user.go
├── models                  #模型目录,负责项目的数据存储部分,例如各个模块的Mysql表的读写模型。
│   ├── food.go
│   ├── user.go
│	└── init.go				#模型初始化
├── logs                    #日志文件目录,主要保存项目运行过程中产生的日志。
├── main.go                 #项目入口,这里负责Gin框架的初始化,注册路由信息,关联控制器函数等。

以上两种目录结构基本上大同小异,一般的项目构建都可以使用这样的项目结构,清晰明了。

3.项目结构扩展

对于一般的项目都是使用上面的目录结构,但是有时候项目复杂了,会进一步拆分,把数据校验,模型定义,数据操作,服务,响应进行解耦。


数据校验->控制器->调用服务->数据操作->数据模型->数据响应

目录结构如下:

├── conf                    #项目配置文件目录
│   └── config.toml         #大家可以选择自己熟悉的配置文件管理工具包例如:toml、xml、ini等等
├── requests                #定义入参即入参校验规则
│   └── user_request.go
│   └── food_request.go
├── responses                #定义响应的数据
│   └── user_response.go
│   └── food_response.go
├── services                #服务定义目录
|	└── v1					#服务v1版本|	└── user_service.go
│   |	└── food_service.go
|	└── v2					#服务v2版本|	└── user_service.go
│   |	└── food_service.go
├── api             		#api目录,按模块存放控制器(或者叫控制器函数),必要的时候可以继续划分子目录。
│   └── v1					#apiv1版本|	└── user.go
│   |	└── food.go
│   └── v2					#apiv2版本|	└── user.go
│   |	└── food.go
├── router					#路由目录
│   └── v1					#路由v1版本|	└── user.go
│   |	└── food.go
│   └── v2					#路由v2版本|	└── user.go
│   |	└── food.go
├── init.go					#路由初始化
├── pkg						#自定义的工具类等
│   └── e					#项目统一的响应定义,如错误码,通用的错误信息,响应的结构体
│   └── util				#工具类目录
├── models                  #模型目录,负责项目的数据存储部分,例如各个模块的Mysql表的读写模型。
│   ├── food.go
│   ├── user.go
│	└── init.go				#模型初始化
├── repositories            #数据操作层,定义各种数据操作。
│   └── user_repository.go
│   └── food_repository.go
├── logs                    #日志文件目录,主要保存项目运行过程中产生的日志。
├── main.go                 #项目入口,这里负责Gin框架的初始化,注册路由信息,关联控制器函数等。

通过上面的项目结构扩展,增加了代码量,但是把各层的职责界定了,每一层的只做每一层的事情,数据解耦

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值