好久没有写后端 api 了,最近写一个微信小程序,顺便后端也用 Golang 的 echo web 框架写了,使用 go mod 做包管理,分享一下自己在用 golang 做 web 开发的项目目录结构。Github 地址请戳 golang-web-layout,其中包含了示例代码,如果有需要的话你也可以自己修改其中的代码,用作自己平时开发使用的开发框架模板。

├── README.md
├── bin
├── bootstrap
│   └── bootstrap.go
├── config
│   ├── config.go
│   ├── dev.ini
│   └── prod.ini
├── database
│   └── mysql.go
├── go.mod
├── go.sum
├── handler
│   ├── auth_handler.go
│   └── base_handler.go
├── log
├── middleware
│   ├── logger.go
│   └── openid.go
├── model
│   ├── base_model.go
│   └── user_model.go
├── repository
│   └── user_repository.go
├── router
│   └── router.go
├── server.go
├── service
│   └── user_service.go
├── static
├── test
└── utils
    ├── const.go
    ├── http.go
    ├── log
    │   └── log.go
    ├── utils.go
    └── validator.go

  • bin 主要存放编译后的可实现文件

  • bootstrap/bootstrap.go 项目启动文件,其中包含了一些实现一些初始化的工作,比如根据环境变量获取配置,初始化数据库连接,注册路由,启动服务等等

  • database 各种数据库连接创建文件

  • handler 处理 http 请求和返回,相当于 MVC 的 Controller,但是一般其中不写复杂的业务代码

  • log 记录日志,按天划分,也可以自由定制

  • middleware 存放自定义请求中间件

  • model 模型定义文件

  • repository 存放模型数据操作逻辑的文件,通过 interface 方式,方便注入不同数据库

  • service 存放业务处理代码文件,一般 handler 中的文件调用

  • router 路由定义的文件

  • service 业务逻辑层代码,其实是 handler 和 repository 的一个桥梁,方便解耦

  • utils 自动定义的一些工具

  • test 单元测试等一些测试代码

  • server.go server 的入口文件

转载请注明: 转载自Ryan 是菜鸟 | LNMP 技术栈笔记

如果觉得本篇文章对您十分有益,何不 打赏一下

谢谢打赏

本文链接地址: Golang Web 项目工程结构