Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zqhong/albedo
Gin Api Project Skeleton
https://github.com/zqhong/albedo
api gin skeleton
Last synced: 21 days ago
JSON representation
Gin Api Project Skeleton
- Host: GitHub
- URL: https://github.com/zqhong/albedo
- Owner: zqhong
- License: mit
- Created: 2018-09-17T09:53:52.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-05-24T11:45:44.000Z (over 5 years ago)
- Last Synced: 2024-11-14T14:33:46.674Z (about 1 month ago)
- Topics: api, gin, skeleton
- Language: Go
- Size: 83 KB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Albedo: Gin Api Project Skeleton
![s-2a.png](https://i.loli.net/2018/09/17/5b9f7028c8e77.png)基于 [Gin](https://github.com/gin-gonic/gin) 的 API 开发框架
## 使用的包
* web 框架:[Gin](https://github.com/gin-gonic/gin)
* db:[gorm](https://github.com/jinzhu/gorm)
* json 序列化库:[json-iterator/go](https://github.com/json-iterator/go)
* 配置管理:[viper](https://github.com/spf13/viper)
* 日志记录:[beego logger](https://beego.me/docs/module/logs.md)
* 命令行:[cobra](https://github.com/spf13/cobra)
* Redis:[go-redis/redis](github.com/go-redis/redis)
* 任务调度:[robfig/cron](github.com/robfig/cron)## 辅助库/组件
* 包依赖管理:[go mod](https://blog.golang.org/using-go-modules)
* Makefile:内置快速使用的命令## 安装
```bash
# 1、克隆当前项目到本地
$ git clone [email protected]:zqhong/albedo.git# 2、打开 Makefile,修改 PROJECT_NAME 为你的项目名称,例如:github.com/zqhong/demo233
# 3、修改配置文件 conf/config.yaml
# 4、执行最后到安装处理
$ make install# 5、测试
# 如果启动失败,检查 runtime/albedo.log 日志文件
$ ./build/web
$ ./build/cli
```## 新建命令
```bash
# 新产生的文件在 cmd 目录下
# 重新编译 cli 之后,使用 ./build/albedo-cli 即可看到新命令的帮助提示
$ cobra add [command name]
```## Makefile 内置命令
```bash
# 同时编译 web 和 cli
$ make build$ make build-web
$ make build-cli$ make run-web
$ make -run-cli$ make test
$ make clean
```## admin.sh 内置命令
```bash
$ bash admin.sh start$ bash admin.sh stop
$ bash admin.sh status
```## 目录结构
```
├── admin.sh # 进程管理脚本(start/stop/restart/status)
├── app # 进程启动 && 服务初始化代码
│ ├── boot.go # 进程启动代码
│ ├── config.go # 配置服务初始化
│ ├── db.go # db 服务初始化
│ ├── gin.go # gin 服务初始化
│ ├── logger.go # logger 服务初始化
├── build # 存放编译后的二进制文件
├── conf # 配置文件存储目录
│ ├── config.yaml # 配置文件
├── cronjob # 任务调度相关
├── handler # MVC 架构中的 C
│ ├── handler.go
│ ├── sd # 健康检查handler
│ │ └── check.go
├── model # MVC 架构中的 M
├── pkg # 引用的包
├── router # 路由相关处理
├── runtime # 存放临时文件,如日志、pid 文件
├── util # 工具类函数存放目录
└── vendor # vendor目录用来管理依赖包
```## logger 的使用
参考:[https://beego.me/docs/module/logs.md](https://beego.me/docs/module/logs.md)## 缓存模块的使用
参考:[https://beego.me/docs/module/cache.md](https://beego.me/docs/module/cache.md)## 任务调度的使用
```golang
import (
"github.com/robfig/cron"
"fmt"
)c := cron.New()
c.AddFunc("@hourly", func() {
fmt.Println("hourly call")
})c.Start()
```## 待完成
- [ ] 添加测试
- [ ] 文档支持(Swagger)
- [x] 多数据库驱动支持
- [x] 进程级缓存(MemCache)
- [x] 任务调度(crontab)## 参考
* [lexkong/apiserver](https://github.com/lexkong/apiserver)
* [chenhg5/morningo](https://github.com/chenhg5/morningo)
* [inhere/go-gin-skeleton](https://github.com/inhere/go-gin-skeleton)