Docs: Add API field type documentation
This commit is contained in:
@@ -0,0 +1,74 @@
|
|||||||
|
# UUVPN API 字段类型说明
|
||||||
|
|
||||||
|
## 问题背景
|
||||||
|
|
||||||
|
在对接 Xboard 后端 API 时,发现部分字段在不同接口返回的类型不一致,需要在客户端代码中做兼容处理。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 字段类型不一致问题
|
||||||
|
|
||||||
|
### `sell` 字段
|
||||||
|
|
||||||
|
| 接口 | 返回类型 | 示例值 |
|
||||||
|
|------|---------|--------|
|
||||||
|
| `/api/v1/user/getSubscribe` | `Int` | `"sell": 1` |
|
||||||
|
| `/api/v1/user/plan/fetch` | `Boolean` | `"sell": true` |
|
||||||
|
|
||||||
|
**解决方案:**
|
||||||
|
|
||||||
|
在 `PlanData` 数据类中:
|
||||||
|
- 字段类型定义为 `Any?`
|
||||||
|
- 添加辅助属性 `isSell` 进行类型转换
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
@SerializedName("sell") val sell : Any?
|
||||||
|
|
||||||
|
// 辅助属性:将 sell 转换为布尔值(兼容整数和布尔类型)
|
||||||
|
val isSell: Boolean
|
||||||
|
get() = when (sell) {
|
||||||
|
is Boolean -> sell as Boolean
|
||||||
|
is Number -> (sell as Number).toInt() != 0
|
||||||
|
null -> false
|
||||||
|
else -> false
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 其他注意事项
|
||||||
|
|
||||||
|
### `PlanData` 字段
|
||||||
|
|
||||||
|
为确保 JSON 解析稳定性,以下字段定义为可空类型:
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| `id` | `Int?` | 套餐ID |
|
||||||
|
| `name` | `String?` | 套餐名称 |
|
||||||
|
| `show` | `Boolean?` | 是否显示 |
|
||||||
|
| `renew` | `Boolean?` | 是否可续费 |
|
||||||
|
| `sell` | `Any?` | 是否可购买(类型不一致) |
|
||||||
|
|
||||||
|
### `SubscribeData` 字段
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| `device_limit` | `Int?` | 设备限制数 |
|
||||||
|
| `speed_limit` | `Int?` | 速度限制 |
|
||||||
|
| `next_reset_at` | `Long?` | 下次重置时间 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 相关文件
|
||||||
|
|
||||||
|
- [ApiService.kt](Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/network/ApiService.kt) - API 接口和数据类定义
|
||||||
|
- [ApiClient.kt](Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/network/ApiClient.kt) - Retrofit 客户端配置
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 更新日志
|
||||||
|
|
||||||
|
- 2026-07-03: 发现并修复 `sell` 字段类型不一致问题
|
||||||
|
- 2026-07-03: 添加 `SubscribeData` 缺失字段
|
||||||
|
- 2026-07-03: 修复 Retrofit baseUrl 必须以 `/` 结尾的问题
|
||||||
Reference in New Issue
Block a user