Gin框架做开发,常用目录结构

一、标准完整目录(gin后台管理+标准api目录)

your-project/
├── cmd/
│   └── server/
│       └── main.go              # 入口:加载配置、初始化DB、启动Gin
├── config/                      # 配置文件
├── internal/                    # 内部业务(核心)
│   ├── model/                   # 数据库模型
│   │   ├── entity/              # 表结构:user、admin、order、config 等
│   │   └── dto/                 # 请求/返回结构体(入参、出参)
│   ├── dao/                     # 数据操作层
│   │   ├── user_dao.go
│   │   └── admin_dao.go
│   ├── service/                 # 业务逻辑层
│   │   ├── api/                 # 对外接口业务
│   │   │   └── user_service.go
│   │   └── admin/               # 后台管理业务
│   │       └── admin_user_service.go
│   └── middleware/              # 中间件
│       ├── jwt_auth.go          # 普通用户JWT
│       └── admin_auth.go         # 管理员鉴权(必须单独一套)
├── api/
│   ├── v1/                      # 对外接口
│   │   └── user_controller.go
│   └── admin/                   # 后台管理接口(控制器)
│       ├── login.go             # 管理员登录
│       ├── user_controller.go   # 后台用户管理
│       ├── order_controller.go  # 后台订单管理
│       └── system_controller.go # 系统配置
├── router/
│   ├── router.go                # 总路由
│   ├── api_router.go            # 对外API路由
│   └── admin_router.go          # 后台路由组
├── pkg/
│   ├── response/                # 统一返回体
│   ├── utils/
│   └── logger/
├── static/                      # 后台静态资源(可选)
├── templates/                   # HTML模板(如果用后端渲染)
├── uploads/            # ✅ 核心:用户上传文件、图片都放这里
│   ├── images/         # 头像、封面、内容图
│   ├── files/          # 附件、文档
│   └── temp/           # 临时文件
├── go.mod
└── README.md

二、核心目录详解

1. cmd/server/main.go
项目唯一入口
初始化 Gin 引擎
加载配置、连接数据库
注册路由、启动服务
2. api/
接口控制层
接收前端 HTTP 请求
校验入参
调用 service 层
返回统一响应结果
按版本划分(v1/v2),方便迭代
3. internal/
核心业务代码(私有,不可被外部项目引用)
model:数据库表结构体、请求 / 响应结构体
dao(Data Access Object):纯操作数据库,无业务逻辑
service:业务逻辑层,处理核心规则、调用 dao
4. pkg/
公共工具(通用、可复用)
统一响应格式、日志、JWT、加密、时间工具等
所有项目都能共用的代码放这里
5. router/
路由与中间件
统一管理所有接口路由
全局中间件(跨域、鉴权、日志)
6. config/
配置管理
数据库、Redis、端口、环境变量等配置
支持 yaml/json 配置文件

1. 接口层拆分
api/v1/*:对外用户接口(APP / 小程序)
api/admin/*:后台管理接口(增删改查、导出、审核)
2. 业务层拆分
service/api/:普通用户业务
service/admin/:管理员业务(权限更高)
3. 中间件必须两套(非常重要)
用户登录鉴权:middleware/jwt_auth.go
管理员登录鉴权:middleware/admin_auth.go
一般后台会额外加:角色权限 RBAC、操作日志、防重复提交
4. 路由分组(Gin 核心用法)
// router.go 示例
func InitRouter() *gin.Engine {
    r := gin.Default()

    // 对外 API
    api := r.Group("/api/v1")
    {
        api.GET("/user", api.UserList)
    }

    // 后台管理
    admin := r.Group("/admin")
    admin.Use(middleware.AdminAuth())  // 管理员鉴权
    {
        admin.GET("/users", admin.UserList)
        admin.POST("/user", admin.CreateUser)
    }

    return r
}
5. 后台常见额外目录
templates/:如果你用 Gin 渲染 HTML 后台页面
static/:存放 js/css/image
internal/service/admin/log_service.go:操作日志
internal/model/entity/role.go:角色、权限表

三、极简版(小项目后台)

main.go
config/
models/
middleware/       // 管理员鉴权
controllers/
  ├── api/        // 对外接口
  └── admin/      // 后台接口
services/
  ├── api/
  └── admin/
router/           // 路由分组
utils/

四、后台管理最常用结构总结

  1.一套 Gin,两套路由:/api/v1 + /admin
  2.两套鉴权:用户 Token / 管理员 Token 不能混用
  3.控制器和业务分层:后台接口单独文件夹,不乱
  4.后台必带:登录、鉴权、RBAC 权限、操作日志

张贤博客
请先登录后发表评论
  • latest comments
  • 总共0条评论