Skip to content

yangbinnnn/go-box

Repository files navigation

go-box

An small bootstrap box for golang HTTP project

快速体验

确保已安装docker,docker-compose

  1. docker-compose build
  2. docker-compose up
  3. open http://127.0.0.1:8000

layout

main.go            - 工程入口
config.json        - 配置文件
api/               - HTTP API
core/              - 业务逻辑
common/            - 通用全局代码
db/                - 数据库
file/              - 文件存储
micro/             - 微服务相关
middleware/        - Echo 自定义中间件
test/              - 测试目录
web/               - 前端资源

Dockerfile         - Docker 构建文件
control            - 帮助脚本

使用

  1. 切换到GOPATH 目录下,并执行export GO111MODULE=on 开启go mod 功能
  2. 克隆工程 git clone https://github.com/yangbinnnn/go-box.git
  3. 重命名工程,比如mv go-box mydemo
  4. 切换到工程目录下,比如cd mydemo,修改config.jsonnamemydemo 以及数据库相关配置
  5. 重建module,./control remodule,这一步会将*.go 中所有import go-box/xxx 替换成import mydemo/xxx
  6. 编译工程,./control build
  7. 运行工程,./dist/mydemo
  8. 编译web,cd web && yarn install && npm run build
  9. 访问站点,默认http://127.0.0.1:8000,如果页面正常显示,说明工程构建成功
  10. 打包发布,./control pack
  11. 打包所有,./control apidoc && ./control buildweb && ./control packall

开发指南

  • 配置文件

common/config.go 中定义工程所有配置项,并在config.json 中配置值,使用JSON 方便解析

  • 数据结构定义

common/model.go 中统一定义数据结构

  • 操作数据

db 中对业务逻辑的数据操作

  • 业务逻辑

core 中实现工程的业务逻辑,并统一core/core.go - InitCore 中初始化业务逻辑相关依赖如数据库表实例等,这样可以方便在core 包中使用,适当拆分业务逻辑分散到core/*.go 多个文件中,如用户相关的逻辑使用core/user.go

  • API接口定义

api/api.go 中注册路由,路由的具体函数需要按业务逻辑分散到api/*.go 多个文件中,如用户相关的接口使用api/user.go

  • Echo 自定义中间件

middleware 中自定义Echo 中间,示例TokenAuth.go

  • 工程入口

main.go 为整个工程的入口,主要负责初始化各个模块,建议不要在其中实现复杂的业务逻辑

  • 生成接口文档

需要执行npm install apidoc -g 安装apidocapidoc 为注释型文档生成工具,支持N 种语言,语法参考 apidoc 执行./control apidoc` 生成文档

默认路由

  • / 前端首页
  • /static 前端静态资源
  • /ws websocket api
  • /api/xxx 业务 api
  • /docs/ api 接口文档,默认只在DEBUG 模式下开启

Docker

  • 编译
docker build . -t go-box
  • 运行
docker run -p 8000:8000 -v $(pwd)/config.json:/srv/config.json go-box

其他

  • websocket 推送,直接使用common.WSBroadcast(msg) 即可,可以推送给所有连接的客户端

POWERD BY

TODO

  • Dockerfile
  • 数据库: mongodb
  • 数据库: redis
  • Websocket
  • 小文件存储: 本地磁盘
  • 小文件存储: 对象存储
  • Cookies Token Auth
  • 定时任务管理
  • micro - gRPC for inter-service communication
  • micro - Jaeger for request tracing
  • micro - Consul for service discovery

About

An small bootstrap box for golang HTTP project

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published