Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

AltStyle によって変換されたページ (->オリジナル) /