项目原始仓库地址: https://github.com/wangshibiaoFlytiger/apiproject #若本项目给您带来收获, 还请您动动小拇指,右上角给点个赞哈,万分感谢哈哈!!! 一. 工程创建 mkdir ./apiproject cd ./apiproject go mod init apiproject go build 二. 集成gin web框架 go get github.com/gin-gonic/gin go get github.com/go-sql-driver/mysql go get github.com/jinzhu/gorm 三. 项目规范 1. 包名追加前缀 model层: m_ dao层: d_ service层: s_ controller层: c_ 2. 所有的类 每一层的文件名或类名以所属层为后缀, model层例外 四. 测试代码 执行单元测试, 需要进入test目录, 然后执行go test 五. live reload 自动编译并运行 go get -u github.com/cosmtrek/air 项目根目录创建liveReload.conf文件: 编辑配置项bin,full_bin,exclude_file(将rice-box.go移除) 执行命令 air -c ./liveReload.conf 六. 集成自动测试框架goconvey go get github.com/smartystreets/goconvey 七. 支持跨域 go get github.com/gin-contrib/cors 此外还需要如下显示指定ugorji/go的版本, 使用v1.1.2版本,最新版本会出现包冲突错误:cannot load github.com/ugorji/go/codec: ambiguous import: found github.com/ugorji/go/codec in multiple modules go get github.com/ugorji/go@v1.1.2 八. 指定运行环境 通过指定命令行参数--profile参数来加载对应的配置文件, 取值范围:dev,test,pro. 可通过执行帮助命令查看./apiproject help 九. 打包静态文件到可执行文件 go get github.com/GeertJohan/go.rice/... //执行go build之前, 执行如下命令, 将项目中所有引用rice.MustFindBox或rice.FindBox的所属文件路径, 作为--import-path的参数 rice -v --import-path "./router" --import-path "./config" embed-go 注意事项: rice.MustFindBox的路径参数不能为绝对路径, 且必须为字符串字面量, 不能为字符串变量 最终的静态文件路径不能以./开头, 否则报错, 如错误写法box.MustBytes("./config_dev.ini"), 正确写法box.MustBytes("config_dev.ini") 每次修改相应的静态文件, 记得随时执行rice命令, 否则会导致程序读取的文件内容不是最新的 把box理解为目录即可 十. 压缩可执行文件 1. go build增加如下编译参数 -ldflags "-s -w" 2. 使用压缩工具, 如upx 下载地址:https://github.com/upx/upx/releases upx --brute 可执行文件路径 十一. git分支约定 1. master分支放通用功能, 目标是打造成1个通用框架 2. 创建实际项目的操作 创建项目主分支 git checkout -b 项目名称_master 创建针对该项目的分支 git checkout 项目名称_master git checkout -b 项目名称_branch_当前时间 合并项目分支到项目主分支 git checkout 项目名称_master 合并项目分支到项目主分支 合并通用框架的递增功能到项目分支(可以作为通用的功能一定要在master分支中开发) 十二. 分布式ID生成库 go get github.com/bwmarrin/snowflake 十三. kafka消息队列 1. 安装客户端库的依赖库librdkafka git clone https://github.com/edenhill/librdkafka.git cd librdkafka ./configure --prefix /home/wangshibiao/programs/librdkafka make sudo make install 2. 设置环境变量 vi /etc/profile.d/wangshibiao.sh export PKG_CONFIG_PATH=/home/wangshibiao/programs/librdkafka/lib/pkgconfig source /etc/profile 3. 安装客户端 go get -u gopkg.in/confluentinc/confluent-kafka-go/kafka 十四. 纯真ip归属地查询 1. 直接执行如下命令会提示安装失败: malformed module path "github.com/kayon/iploc/...": double dot 经实践, 顺序执行如下2个命令即可完成安装, 原因未知 go get -u github.com/kayon/iploc/ go get -u github.com/kayon/iploc/... 2. 下载纯真数据库文件 iploc-fetch qqwry.gbk.dat 3. 转换为 UTF-8 iploc-conv -s qqwry.gbk.dat -d qqwry.utf8.dat
xushuanglu/apiproject
golang项目开发脚手架,集成最佳实践(gin+gorm+go-redis+mongo+cors+jwt+json日志库zap(支持日志收集到kafka或mongo)+消息队列kafka+微信支付宝支付gopay+api加密+api反向代理+go modules依赖管理+headless爬虫chromedp+makefile+二进制压缩+livereload热加载)
Go