wz-golang-server/docs/config_dev_and_go.md

107 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 端点与配置中心设置 |
说明:文档仅描述字段用途,未展开敏感值(如密码、密钥等)。如需在文档中补充具体值,请告知需要保留/脱敏的范围。