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

KenmyZhang · · 11556 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

### 技术选型 框架: 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)

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

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

11556 次点击  ∙  1 赞  
加入收藏 微博
被以下专栏收入,发现更多相似内容
1 回复  |  直到 2018-07-17 19:54:22
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传