Onion 项目使用教程
1. 项目目录结构及介绍
onion/
├── cmd/
│ ├── onion/
│ │ └── main.go
├── config/
│ └── config.yaml
├── internal/
│ ├── handlers/
│ │ └── handler.go
│ ├── models/
│ │ └── model.go
│ └── utils/
│ └── util.go
├── vendor/
├── go.mod
├── go.sum
└── README.md
目录结构说明
- cmd/: 包含项目的入口文件,通常是
main.go
文件所在的位置。 - config/: 存放项目的配置文件,如
config.yaml
。 - internal/: 包含项目的内部逻辑代码,通常分为
handlers
(处理请求的逻辑)、models
(数据模型)和utils
(工具函数)。 - vendor/: 存放项目的依赖包,通常由
go mod vendor
命令生成。 - go.mod 和 go.sum: 分别是 Go 模块的依赖描述文件和依赖校验文件。
- README.md: 项目的说明文档。
2. 项目启动文件介绍
项目的主启动文件位于 cmd/onion/main.go
。该文件负责初始化配置、加载依赖并启动应用程序。
main.go
文件内容概览
package main
import (
"log"
"onion/config"
"onion/internal/handlers"
"onion/internal/models"
"onion/internal/utils"
)
func main() {
// 初始化配置
cfg, err := config.LoadConfig("config/config.yaml")
if err != nil {
log.Fatalf("无法加载配置文件: %v", err)
}
// 初始化数据库连接
db, err := models.InitDB(cfg.Database)
if err != nil {
log.Fatalf("无法初始化数据库: %v", err)
}
// 初始化路由
router := handlers.InitRouter(db)
// 启动服务
log.Println("服务启动中...")
err = router.Run(cfg.Server.Address)
if err != nil {
log.Fatalf("服务启动失败: %v", err)
}
}
启动文件说明
- 配置加载: 通过
config.LoadConfig
函数加载config/config.yaml
配置文件。 - 数据库初始化: 使用
models.InitDB
函数初始化数据库连接。 - 路由初始化: 使用
handlers.InitRouter
函数初始化路由。 - 服务启动: 最后,通过
router.Run
启动 HTTP 服务。
3. 项目配置文件介绍
项目的配置文件位于 config/config.yaml
,该文件包含了应用程序的各项配置参数。
config.yaml
文件内容示例
server:
address: ":8080"
database:
host: "localhost"
port: 5432
user: "user"
password: "password"
dbname: "onion"
sslmode: "disable"
配置文件说明
- server: 包含服务器的配置,如监听地址
address
。 - database: 包含数据库的连接配置,如主机
host
、端口port
、用户user
、密码password
、数据库名称dbname
和 SSL 模式sslmode
。
通过以上配置,项目可以灵活地适应不同的运行环境和需求。