107 lines
4.4 KiB
Markdown
107 lines
4.4 KiB
Markdown
# config.go 与 config.dev.yaml 说明
|
||
|
||
本文档说明 `server/config/config.go` 与 `server/config/config.dev.yaml` 的职责与字段含义,便于理解配置加载逻辑与开发环境配置项。
|
||
|
||
**config.go**
|
||
|
||
用途:
|
||
1. 定义应用配置结构体(与 YAML 字段一一对应)。
|
||
2. 提供 `LoadConfig()` 读取并解析配置文件到全局变量 `AppConfig`。
|
||
|
||
加载逻辑(`LoadConfig()`):
|
||
1. 先解析命令行参数 `-c` 或 `-config` 指定的配置文件路径。
|
||
2. 未指定时读取环境变量 `GO_ENV`,默认 `dev`。
|
||
3. 按顺序查找配置文件:
|
||
- `config.{env}.yaml`
|
||
- `config/config.{env}.yaml`
|
||
- `../config/config.{env}.yaml`
|
||
4. 若未找到,回退到 `config/config.{env}.yaml` 以便报错信息准确。
|
||
5. 读取文件并反序列化到 `AppConfig`;解析失败会 `panic`,读取失败会打印提示并保留默认空配置。
|
||
|
||
结构体与字段说明(与 YAML 对应):
|
||
|
||
| 结构体 | 字段 | 说明 |
|
||
| --- | --- | --- |
|
||
| `LogConfig` | `level` | 日志级别 |
|
||
| | `dir` | 日志目录 |
|
||
| | `console` | 是否输出到控制台 |
|
||
| `ServerConfig` | `port` | 服务端口 |
|
||
| | `worker_id` | 雪花算法机器 ID |
|
||
| | `datacenter_id` | 雪花算法数据中心 ID |
|
||
| `SecurityConfig` | `enable` | 是否启用签名安全校验 |
|
||
| | `header_key` | 签名请求头字段名 |
|
||
| | `secret_key` | 签名密钥 |
|
||
| `PayloadCryptoConfig` | `enable` | 请求/响应加密总开关 |
|
||
| | `header_key` | 加密标记请求头字段名 |
|
||
| | `secret_key` | 加密密钥 |
|
||
| | `whitelist` | 白名单路径 |
|
||
| | `request` | 请求方向加密配置 |
|
||
| | `response` | 响应方向加密配置 |
|
||
| `PayloadCryptoDirectionConfig` | `enable` | 是否启用 |
|
||
| | `required` | 是否强制 |
|
||
| `RateLimitConfig` | `enable` | 是否启用限流 |
|
||
| | `default` | 默认限流规则 |
|
||
| | `rules` | 路径级别规则 |
|
||
| `RateLimitRule` | `interval` | 时间间隔(秒) |
|
||
| | `max_requests` | 最大请求次数 |
|
||
| `SwaggerConfig` | `user` | Swagger 登录用户名 |
|
||
| | `password` | Swagger 登录密码 |
|
||
| `DatabaseConfig` | `driver` | 数据库驱动 |
|
||
| | `host` | 数据库地址 |
|
||
| | `port` | 数据库端口 |
|
||
| | `database` | 数据库名 |
|
||
| | `username` | 用户名 |
|
||
| | `password` | 密码 |
|
||
| | `charset` | 字符集 |
|
||
| | `max_idle_conns` | 空闲连接数 |
|
||
| | `max_open_conns` | 最大连接数 |
|
||
| | `conn_max_lifetime` | 连接最大生命周期(小时) |
|
||
| | `log_mode` | 是否开启 SQL 日志 |
|
||
| `RedisConfig` | `addr` | Redis 地址 |
|
||
| | `password` | Redis 密码 |
|
||
| | `db` | Redis DB |
|
||
| `WechatConfig` | `mini_program` | 微信小程序配置 |
|
||
| `WechatMiniProgramConfig` | `app_id` | 小程序 AppID |
|
||
| | `app_secret` | 小程序密钥 |
|
||
| `AppVersionConfig` | `app` | 客户端版本控制 |
|
||
| | `api` | API 端点配置 |
|
||
| | `webview` | WebView 端点配置 |
|
||
| | `ttl_seconds` | 配置缓存秒数 |
|
||
| | `disabled` | 是否禁用 |
|
||
| | `disable_reason` | 禁用原因 |
|
||
| | `tenantId` | 默认租户 ID |
|
||
| `AppClientConfig` | `min_version` | 最低版本 |
|
||
| | `latest_version` | 最新版本 |
|
||
| | `force_update` | 是否强制更新 |
|
||
| `AppEndpointConfig` | `base_url` | 基础地址 |
|
||
| | `version` | 接口版本 |
|
||
| | `min_client_version` | 最低客户端版本 |
|
||
| `TenantConfig` | `enable` | 是否启用多租户 |
|
||
| | `header_key` | 租户请求头字段名 |
|
||
| | `column` | 租户字段名 |
|
||
| | `tables` | 启用租户过滤的表 |
|
||
|
||
**config.dev.yaml**
|
||
|
||
用途:
|
||
- 开发环境配置文件(`GO_ENV=dev` 默认加载)。
|
||
- 覆盖服务端口、日志、安全、限流、数据库、Redis、微信小程序、客户端版本等参数。
|
||
|
||
顶层配置项说明:
|
||
|
||
| 配置段 | 作用 |
|
||
| --- | --- |
|
||
| `server` | 服务端口与雪花算法机器/数据中心 ID |
|
||
| `log` | 日志级别、目录、控制台输出 |
|
||
| `security` | 请求签名安全校验 |
|
||
| `tenant` | 多租户开关与租户标识 |
|
||
| `payload_crypto` | 请求/响应加密配置 |
|
||
| `rate_limit` | 限流开关与规则 |
|
||
| `swagger` | Swagger 文档访问账号 |
|
||
| `database` | 数据库连接与连接池配置 |
|
||
| `redis` | Redis 连接配置 |
|
||
| `wechat` | 微信小程序配置 |
|
||
| `app_config` | 客户端版本、API/WebView 端点与配置中心设置 |
|
||
|
||
说明:文档仅描述字段用途,未展开敏感值(如密码、密钥等)。如需在文档中补充具体值,请告知需要保留/脱敏的范围。
|