quick-gin

module
v0.0.0-...-209e9d0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 14, 2023 License: MIT

README

quick-gin

基于gin的一个轻量api骨架,可以帮助你快速开始业务开发

概括

之前做过其他语言的Web开发,切换到gin后会感觉少了点什么,最明显的一点他没有提供一个推荐或默认的目录结构
比如常见的controllermodelservicerepository等等
这会造成新手不知道如何去组织和划分代码
还有就是没有提供一些开箱即用的Web通用组件,比如数据库,缓存等

目录结构
  project
  ├── build 二进制文件打包目录
  ├── cmd 应用目录,可能存放多个应用
  │   └── app 具体的应用,名字根据业务来取就行
  │       └── main.go 应用的入口,只负责启动服务,不应该涉及业务代码
  ├── config 配置目录
  │   ├── config.ini 这个文件一般不应该提交
  │   └── config.ini.example
  ├── go.mod
  ├── go.sum
  ├── internal 由于业务项目一般是不对外公开的,也不存在被其他项目导入的可能,所以放到internal中
  │   ├── app 对应cmd里面的具体应用
  │   │   ├── api => controller
  │   │   │   ├── base.go 
  │   │   ├── model 这里面只定义模型和关联关系,不建议在这里写CRUD
  │   │   │   ├── base.go
  │   │   ├── router.go 路由
  │   │   └── service
  │   │       ├── student.go
  │   └── pkg
  ├── LICENSE
  ├── log
  │   ├── req20230513.log
  │   └── runtime.log
  ├── Makefile
  ├── readme.md
  └── test
开始使用
  • 克隆仓库到本地
  • 初始化项目,根据自己的系统选择
      ./quick-cli github.com/xxx/myblog
      ./quick-cli-mac github.com/xxx/myblog
      ./quick-cli.exe github.com/xxx/myblog
    
  • 启动服务
    make
    
    详情查看Makefile文件,里面定义几种常用命令
    make build 打包应用
    make stop 停止服务
    make run 启动服务
    make restart 等于 build+stop+run,不带参数时默认执行这个
    之所以用make方式是因为现在网络上很多开源Golang项目都在用
    如果不喜欢你依然可以使用 go run cmd/main.go 这种方式
温馨提示
  • 根目录结构参考自 https://github.com/golang-standards/project-layout
  • 业务层次结构参考了一些开源项目,然后结合一些自己的经验摸索出来的,大家可以参考借鉴,不一定适用所有项目,
    如果有更加优雅的组织方式,欢迎留言讨论
  • 每一个业务层具体干什么这里在啰嗦一下

    controller层 参数验证,返回处理结果

    model层 推荐只定义模型和关联关系,不涉及CRUD, 但是如果你的项目极小,可以考虑在这里写CRUD,砍掉service层, 相当于把service层的功能分摊到model和controller层了

    service层 业务逻辑,调用各种pkg,数据库CRUD 但是如果你的项目很复杂,可能需要复用或者缓存CURD,这个时候你可以在抽一个repository层出来专门处理数据库, 相当于把service在细拆

Directories

Path Synopsis
cmd
app
internal
app

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL