介紹
gocore是一款高度集成的開發框架和腳手架,支持api、rpc、job、task等開發方式,並且集成各類主流開源庫和中間件融入最佳實踐,最終實現簡化流程、提高效率、統一規範。
特性
- 底層基於主流框架gin、gorm、viper、zap等進行封裝整合
- 提供腳手架gocore工具快速初始化項目結構、接口參數路由、數據庫模型(包含逆向生成status)
- 支持多環境多套配置文件並且和nacos配置中心打通,支持熱更新等特性
- 提供簽名、加密、文件、郵件、隨機數、鏈路追蹤、時間、日誌等基礎工具
- 無侵入式理念讓開發精力集中在業務層
- 通過Docker、K8S、istio等體系下建立的研發流程環境管理策略
- 封裝常規阿里雲中間件SLS、RocketMQ、nacos
- 開箱即用
安裝
- 環境要求
- Golang > 1.16
- Go module
獲取項目包
> go get -u github.com/sunmi-OS/gocore/v2
- 腳手架安裝
> go install github.com/sunmi-OS/gocore/v2/tools/gocore@latest
> gocore --version
__ _ ___ ___ ___ _ __ ___
/ _` | / _ \ / __| / _ \ | '__| / _ \
| (_| | | (_) | | (__ | (_) | | | | __/
\__, | \___/ \___| \___/ |_| \___|
|___/
gocore version v1.0.0
快速開始
創建一個示例項目
# 創建工程文件夾
> mkdir test
> cd test
# 創建yaml配置文件模板gocore.yaml
> gocore conf create
...
Welcome to GoCore, Configuration file has been generated.
# 修改gocore.yaml模板之後,根據yaml文件創建工程項目
> gocore service create
__ _ ___ ___ ___ _ __ ___
/ _` | / _ \ / __| / _ \ | '__| / _ \
| (_| | | (_) | | (__ | (_) | | | | __/
\__, | \___/ \___| \___/ |_| \___|
|___/
Run go mod init.
[11/11] Initialize the Request return parameters... 100% [========================================]
Run go mod tidy .
Run go fmt .
goimports -l -w .
Welcome to GoCore, the project has been initialized.
# 下次迭代增加新的接口或數據表更新代碼
> gocore service create
工程創建時導入已有數據庫
# 創建工程文件夾
> mkdir test
> cd test
# 創建yaml配置文件模板gocore.yaml
> gocore conf create
# 創建連接數據庫的配置文件模板mysql.yaml
> gocore mysql create_yaml
# 修改mysql.yaml之後,連接數據庫將字段合併到gocore.yaml
> gocore mysql add
# 修改gocore.yaml模板之後,根據yaml文件創建工程項目
> gocore service create
配置文件
service:
projectName: demo #項目名稱
version: v1.0.0 #項目版本號
config:
cNacos:
env: false #是否使用環境變量
rocketMQConfig: true #是否使用rocketMQ
cMysql: #mysql配置
- name: app #數據庫名稱
hotUpdate: false #是否熱更新
models: #model文件
- name: user #表名稱
auto: false #是否自動建表
fields: #表字段,gorm規則,一行一個自動
- column:id;primary_key;type:int AUTO_INCREMENT
- column:name;type:varchar(100) NOT NULL;default:'';comment:'用戶名';unique_index
comment: 用戶表 #表備註
cRedis: #redis配置
- name: default #redis名稱
hotUpdate: false #是否熱更新
index:
db0: 0 #選擇第幾個db
nacosEnable: true #是否使用nacos
httpApiEnable: true #是否生成接口程序
cronJobEnable: true #是否生成定時任務
jobEnable: true #是否生成常駐任務
httpApis:
host: 0.0.0.0 #api接口監聽ip地址
port: "80" #api接口監聽ip端口
apis:
- prefix: /app/user #api接口前綴
moduleName: user #模塊名稱
handle: #api接口
- name: GetUserInfo #api接口方法名稱,完整路由是/app/user/GetUserInfo
method: Any
requestParams: #api接口請求參數
- name: uid #字段名稱
required: true #是否必填
type: int #字段類型
comment: 用戶ID #字段備註
validate: required,min=1,max=100000 #validate校驗規則
responseParams: #api響應參數
- name: detail #字段名稱
required: true #是否必填
type: '*User' #字段類型,非基礎字段類型,表示嵌套結構體,引用params中的結構體
comment: 用戶詳情 #字段備註
validate: ""
- name: list
required: true
type: '[]*User'
comment: 用戶列表
validate: ""
comment: 獲取用戶信息
params:
User:
- name: uid
required: true
type: int
comment: 用戶ID
validate: ""
- name: name
required: true
type: string
comment: 用戶名
validate: ""
cronJobs:
- spec: '@every 30m' #定時任務規則,參考:github.com/robfig/cron
job:
name: SyncUser #定時任務方法名稱
comment: 同步用戶 #定時任務備註
jobs:
- name: InitUser #一次性任務,常駐任務方法名稱
comment: 初始化默認用戶 #一次性任務,常駐任務備註
聯繫我們
歡迎加入gocore
QQ羣:1004023331 一起溝通討論