分享一款小巧的基于 Go 构建的 API 开发框架,可以快速进行业务开发,遵循 SOLID 设计原则

snake

一款适合于快速开发业务的 Go 框架,主要是提供 API 服务。

项目地址:https://github.com/1024casts/snake

技术栈

特性

目录结构

├── Makefile                     # 项目管理文件
├── conf                         # 配置文件统一存放目录
├── config                       # 专门用来处理配置和配置文件的Go package             
├── db.sql                       # 在部署新环境时,可以登录MySQL客户端,执行source db.sql创建数据库和表
├── docs                         # swagger文档,执行 swag init 生成的
├── handler                      # 类似MVC架构中的C,用来读取输入,并将处理流程转发给实际的处理函数,最后返回结果
├── log                          # 存放日志的目录
├── main.go                      # 项目入口文件
├── model                        # 数据库model
├── pkg                          # 一些封装好的package
├── repository                   # 数据访问层
├── router                       # 路由及中间件目录
├── service                      # 业务逻辑封装
├── schedule                     # 任务调度配置目录
└── scripts                      # 存放用于执行各种构建,安装,分析等操作的脚本

下载安装

# 进入到自己的开发目录,下载安装即可,可以不用是 GOPATH
git clone https://github.com/1024casts/snake

快速开始

TIPS: 需要本地安装数据库和 Redis

// 进入到下载目录
cd snake

// 生成本地环境配置文件
cp config.sample.yaml config.local.yaml

// 编译
make build

// 运行
./scripts/admin.sh start

常用命令

模块

接口文档

http://localhost:8080/swagger/index.html

开发规约

部署

单独部署

上传到服务器后,直接运行命令即可

./scripts/admin.sh start

Docker 部署

如果安装了 docker 可以通过下面命令启动应用:

// 运行
docker-compose up -d

// 验证
http://127.0.0.1/health

Supervisord

如果安装了 Supervisord,可以在配置文件中添加下面内容(默认:/etc/supervisor/supervisord.conf):

[program:snake]
# environment=
directory=/home/go/src/snake/
command=/home/go/bin_snake
autostart=true
autorestart=true
user=root
stdout_logfile=/home/log/snake_std.log
startsecs = 2
startretries = 2
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=10
stderr_logfile=/home/log/snake_err.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=10

重启 Supervisord

supervisorctl restart

CHANGELOG

欢迎大家一起讨论、交流,提 PR,喜欢的话也可以给个 star: https://github.com/1024casts/snake

  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    405 引用 • 1303 回帖 • 686 关注
  • 后端
    33 引用 • 113 回帖 • 1 关注
  • 框架
    38 引用 • 321 回帖 • 1 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    29 引用 • 110 回帖 • 67 关注
回帖
请输入回帖内容...