core
介绍
Golang快速开发的脚手架(完善中...将会把自动生成代码单独立一个工程)
架构
安装教程
mkdir project_name
cd project_name
go mod init *** yourself project module name ***
go get gitee.com/gosineplus/core
···
按照下方 文件模版 创建目录和文件
···
go mod tidy
文件模版
main.go
package main
import (
"context"
"flag"
"fmt"
"gitee.com/gosineplus/core/cache"
"gitee.com/gosineplus/core/config"
"gitee.com/gosineplus/core/ginext"
"gitee.com/gosineplus/core/logger"
"gitee.com/gosineplus/core/mq"
"*** yourself project module name ***/app"
xTools "gitee.com/gosineplus/core/app/tools/apis"
"gitee.com/gosineplus/core/gen"
"github.com/xxjwxc/ginrpc"
)
func main() {
// 读取启动参数
var configPath string
flag.StringVar(&configPath, "c", "./app.yaml", "配置文件路径, 默认 ./app.yaml")
flag.Parse()
config.LoadConfigInfo(configPath) // 加载配置文件
logger.Init() // 初始化日志
ginext.InitDB() // 初始化数据库
cache.NewRedisClient(context.Background()) // 初始化缓存
mq.Init(app.GetConsumers()) // 初始化消息队列
// 初始化gin
g := ginext.GinEngine(config.GLOBAL.App.Mode)
g.Use(ginext.AppInterceptor())
g.Use(ginext.GinRecovery())
// 代码生成API
if config.GLOBAL.App.Mode == "debug" {
g.POST("/gen/exec", gen.GenExec)
}
// 通用工具API
g.POST("/tools/oss/getStsToken", xTools.OssGetStsToken)
g.POST("/tools/oss/getTempUrl", xTools.OssGetTempUrl)
// 业务API
apis := app.GetRouters()
for _, api := range apis {
g.POST(api.Key+"/*path", router.AutoRoute(api.Router))
}
// 启动应用
g.Run(fmt.Sprintf(":%d", config.GLOBAL.App.Port))
}
app.yaml
# 服务器配置
app:
name: your app name
module: *** yourself project module name ***
port: 5678
# 可选值: debug | test | release
mode: debug
# 16位aes密钥
secret:
key: ******
# 日志
log:
file: ./logs/app.log
level: debug # release模式下设置为: info
# 数据库
database:
master: # 主库(写)
host: xxx.xxx.xxx.xxx
port: 5432
user: postgres
password: xxxxxxxx
db: xxx
slave: # 从库(读)
host: xxx.xxx.xxx.xxx
port: 5432
user: postgres
password: xxxxxxxx
db: xxx
# 缓存
cache:
host: xxx.xxx.xxx.xxx:6379 # 集群地址以,分隔
password: xxxxxxxx
# 消息队列
mq:
nsqd: xxx.xxx.xxx.xxx:4150 # tcp连接地址, 多个地址以,分隔
# 权限密钥
jwt:
key: xxxxxxxxxxxxxxxx
expires: 180 # 3小时
excludes:
- /account/signin
# OSS配置
oss:
region: cn-beijing
id: xxxxxxxxxxx # AppKeyID
secret: xxxxxxxxxxxxxxxx # AppKeySecret
arn: acs:ram::xxxxxxxxxx:role/xxxxxx # RoleARN
session: xxx #SessionName
bucket: xxxxxx # BucketName
domain: # 自有域名(可为空)
# 邮件服务器配置
email:
smtp: smtp.xxx.com
port: 465
username: xxxxxx@xxx.com
password: xxxxxxxx
alias: xxx
app/api_router.go
// Code generated by GoSine+. DO NOT EDIT.
package app
// RouterInfo 路由信息
type RouterInfo struct {
Key string
Router interface{}
}
// 注册路由
func GetRouters() []RouterInfo {
return []RouterInfo{}
}
app/mq_consumer.go
package app
import (
"gitee.com/gosineplus/core/mq"
)
// 注册消息队列的消费者
func GetConsumers() []mq.Consumer {
return []mq.Consumer{}
}