V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
qloog
V2EX  ›  Go 编程语言

分享一款适合于快速开发业务的 Go 框架,可用于开发 API 服务,遵循 SOLID 原则

  •  
  •   qloog · 2020-05-09 13:23:23 +08:00 · 2641 次点击
    这是一个创建于 1696 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    项目地址

    https://github.com/1024casts/snake

    技术栈

    • 框架路由使用 gin 路由
    • 中间件使用 gin 框架的中间件
    • 数据库组件 gorm
    • 文档使用 swagger 生成
    • 配置文件解析库 viper
    • 使用 JWT 进行身份鉴权认证
    • 校验器 validator 也是 gin 框架默认的校验器,当前最新是 v9 版本
    • 任务调度 cron
    • 包管理工具 go module
    • 测试框架 goConvey
    • CI/CD Github Actions

    特性

    • 遵循 RESTful API 设计规范
    • 基于 GIN WEB 框架,提供了丰富的中间件支持(用户认证、跨域、访问日志、请求频率限制、追踪 ID 等)
    • 基于 GORM 的数据库存储
    • JWT 认证
    • 支持 Swagger 文档(基于swaggo)
    • 使用 make 来管理 Go 工程
    • 使用 shell(admin.sh) 脚本来管理进程
    • 支持多环境配置

    目录结构

    ├── 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
    

    常用命令

    • make help 查看帮助
    • make dep 下载 go 依赖包
    • make build 编译项目
    • make swag-init 生成接口文档(需要重新编译)
    • make test-coverage 生成测试覆盖
    • make lint 检查代码规范

    模块

    • 用户(示例)

    接口文档

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

    开发规约

    CHANGELOG

    谁在用

    Discussion

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

    1 条回复    2020-05-09 13:34:31 +08:00
    vtwoextb
        1
    vtwoextb  
       2020-05-09 13:34:31 +08:00
    学习学习
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1114 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:49 · PVG 02:49 · LAX 10:49 · JFK 13:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.