Go RESTful API 项目教程
1. 项目目录结构及介绍
├── cmd
│ └── server
├── config
├── internal
│ ├── album
│ ├── auth
│ ├── config
│ ├── entity
│ ├── errors
│ ├── healthcheck
│ └── test
├── migrations
├── pkg
│ ├── accesslog
│ ├── graceful
│ ├── log
│ └── pagination
└── testdata
目录结构说明
- cmd: 主应用程序目录,包含项目的入口文件。
- server: API 服务器应用程序的入口文件。
- config: 配置文件目录,包含不同环境的配置文件。
- internal: 私有应用程序和库代码目录。
- album: 与相册相关的功能代码。
- auth: 认证功能代码。
- config: 配置库代码。
- entity: 实体定义和领域逻辑代码。
- errors: 错误类型和处理代码。
- healthcheck: 健康检查功能代码。
- test: 测试辅助代码。
- migrations: 数据库迁移文件目录。
- pkg: 公共库代码目录。
- accesslog: 访问日志中间件代码。
- graceful: HTTP 服务器优雅关闭代码。
- log: 结构化和上下文感知的日志记录器代码。
- pagination: 分页列表代码。
- testdata: 测试数据脚本目录。
2. 项目启动文件介绍
项目的启动文件位于 cmd/server/main.go
。该文件是整个项目的入口,负责初始化配置、启动 HTTP 服务器以及注册路由。
主要功能
- 初始化配置: 从配置文件中读取应用程序的配置。
- 启动 HTTP 服务器: 创建并启动一个 HTTP 服务器,监听指定的端口。
- 注册路由: 将各个模块的路由注册到 HTTP 服务器中,以便处理客户端的请求。
示例代码
package main
import (
"github.com/qiangxue/go-rest-api/internal/config"
"github.com/qiangxue/go-rest-api/internal/server"
)
func main() {
// 初始化配置
cfg := config.LoadConfig()
// 启动 HTTP 服务器
srv := server.NewServer(cfg)
srv.Run()
}
3. 项目的配置文件介绍
项目的配置文件位于 config
目录下,通常包含不同环境的配置文件,如 config.dev.yaml
、config.prod.yaml
等。
配置文件结构
# config.dev.yaml
server:
port: 8080
timeout: 30s
database:
host: localhost
port: 5432
user: postgres
password: password
name: mydb
jwt:
secret: mysecret
expiration: 24h
配置项说明
- server: 服务器配置。
- port: 服务器监听的端口。
- timeout: 请求超时时间。
- database: 数据库配置。
- host: 数据库主机地址。
- port: 数据库端口。
- user: 数据库用户名。
- password: 数据库密码。
- name: 数据库名称。
- jwt: JWT 认证配置。
- secret: JWT 密钥。
- expiration: JWT 过期时间。
通过这些配置文件,可以方便地管理不同环境下的应用程序配置,确保应用程序在不同环境中的行为一致。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考