gin 项目结构_基于gin框架快速开发应用(实战类型项目)

### 技术选型

框架: gin

日志处理: zap

orm: gorm

优雅重启HTTP服务: gracehttp

测试框架: ginkgo

### 接口风格

RESTFUL

### 项目结构

* api - handler函数

* route - 路由注册

* model - 数据模型以及数据库操作

* doc - 接口文档

* log - 日志处理

* config - 配置文件

* tools - 公共工具类

* vendor - 项目依赖其他开源项目目录

* dist - 打包生成安装包的存放路径

* main.go - 程序执行入口

* Makefile 提供编译、打包、测试等功能的脚本文件

* ginkgo 二进制文件,容器内执行测试用例的时候需要使用的命令,请勿移除

* junit.xml 测试报告

* coverprofile.txt 通过的测试的覆盖率的概要

### 语法检查

make govet

### 检查是否符合官方统一标准的风格

make gofmt

### 编译

make build

### 打包

make package

### 测试

#### 先创建一个新的Docker网络

docker network create -d bridge my-net

#### 执行测试用例

创建mysql容器实例会占用3306,确保该端口未被其他应用使用

make test

最后生成的测试报告junit.xml和覆盖率coverprofile.txt文件在对应package的目录下

make test包括下面三个步骤

* 移除容器,排除历史测试数据干扰

make clean-docker

* 启动docker,创建一个mysql容器实例

make start-docker

* 开始执行测试用例

make test-server

### 测试用例覆盖率可视化

go tool cover -html=coverprofile.txt -o coverprofile.html

可以很清楚地看到测试用例覆盖的代码和未曾覆盖到的代码

### 管理依赖包工具(Vendor Tool)

govendor是依赖管理利器

##### install govendor

go get -u github.com/kardianos/govendor

##### command

通过指定包类型,可以过滤仅对指定包进行操作。

| 命令| 功能 |

|-------| --------|

| govendor init |初始化 vendor 目录 |

| govendor list |列出所有的依赖包 |

| govendor add |添加包到 vendor 目录,如 govendor add +external 添加所有外部包 |

| govendor add PKG_PATH |添加指定的依赖包到 vendor 目录|

| govendor update |从 $GOPATH 更新依赖包到 vendor 目录|

| govendor remove |从 vendor 管理中删除依赖 |

| govendor status |列出所有缺失、过期和修改过的包 |

| govendor fetch |添加或更新包到本地 vendor 目录 |

| govendor sync | 本地存在 vendor.json 时候拉去依赖包,匹配所记录的版本 |

| govendor get |类似 go get 目录,拉取依赖包到 vendor 目录 |

### Create Database

* 以root用户登录MySQL

mysql -u root -p

* 创建luckgo用户'luckgo'

mysql> create user 'luckgo'@'%' identified by 'luckgo-password';

其中%表示网上的所有机器都可以连接上,使用具体的IP地址更安全点

mysql> create user 'luckgo'@'0.0.0.0' identified by 'luckgo-password';

* 创建critic数据库

mysql> create database luckgo;

* 允许luckgo用户的访问权限

mysql> grant all privileges on luckgo.* to 'luckgo'@'%';

* 退出MySQL

mysql> exit

### 平滑升级

kill -USR2 PID

### 应用日志切割

使用Linux系统默认安装的logrotate工具,在目录/etc/logrotate.d/下增加配置文件luckgo.conf

/path/to/log1 /path/to/log2 {

compress

dateext

maxage 365

rotate 60

size = 10M

notifempty

missingok

create 644

copytruncate

}

[项目地址](https://github.com/KenmyZhang/luckgo)

有疑问加站长微信联系(非本文作者))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值