Skip to content

Commit ace8eb1

Browse files
committed
docs(API.md): 更新API文档以明确认证要求和玩家查询参数
- 修改“公开端点”描述,明确其无需 API Token 但可能需要其他凭证 - 为 `/api/v1/register` 和 `/api/v1/admin/generate-token` 添加详细认证说明 - 更新 `/api/v1/player` 端点描述,支持通过查询参数 `name` 和 `includeOffline` 获取玩家数据 - 增加对离线玩家查询、并发限制和超时机制的说明 - 补充相关 curl 示例和错误响应示例,提升接口使用清晰度
1 parent a2765ab commit ace8eb1

1 file changed

Lines changed: 72 additions & 8 deletions

File tree

API.md

Lines changed: 72 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,14 @@ curl -H "X-Admin-Password: your-admin-password" \
7676

7777
### 公开端点
7878

79-
以下端点无需认证(如果认证被禁用,所有端点都无需认证):
80-
- `/api/v1/register` - 用户注册
81-
- `/api/v1/admin/generate-token` - 生成注册令牌
79+
以下端点无需 API Token 认证(如果认证被禁用,所有端点都无需认证):
80+
- `/api/v1/register` - 用户注册(无需认证,但需要有效的注册令牌)
81+
- `/api/v1/admin/generate-token` - 生成注册令牌(无需 API Token,但需要管理员密码)
82+
83+
**说明:**
84+
- "公开端点"指的是不需要 API Token 的端点
85+
- `/api/v1/register` 虽然不需要 API Token,但需要提供有效的注册令牌(token)才能注册
86+
- `/api/v1/admin/generate-token` 虽然不需要 API Token,但需要通过 `X-Admin-Password` 头提供管理员密码
8287

8388
### 自动生成凭证
8489

@@ -124,15 +129,17 @@ auth:
124129
### 用户注册 API
125130
| 端点 | 方法 | 描述 | 认证要求 |
126131
|------|------|------|----------|
127-
| `/api/v1/register` | POST | 用户注册(使用注册令牌) | 无(公开) |
128-
| `/api/v1/admin/generate-token` | POST | 生成注册令牌 | 无(公开)* |
132+
| `/api/v1/register` | POST | 用户注册(使用注册令牌) | 注册令牌 |
133+
| `/api/v1/admin/generate-token` | POST | 生成注册令牌 | 管理员密码 |
129134

130-
*注:虽然是公开端点,但需要管理员密码验证
135+
**说明:**
136+
- `/api/v1/register` 不需要 API Token,但需要在请求体中提供有效的注册令牌(token)
137+
- `/api/v1/admin/generate-token` 不需要 API Token,但需要在请求头 `X-Admin-Password` 中提供管理员密码
131138

132139
### 玩家数据查询 API
133140
| 端点 | 方法 | 描述 | 认证要求 |
134141
|------|------|------|----------|
135-
| `/api/v1/player/{playerName}` | GET | 获取玩家详细数据 | API Token |
142+
| `/api/v1/player` | GET | 获取玩家详细数据(使用查询参数 `?name=玩家名`) | API Token |
136143

137144
### 服务器监控 API
138145
| 端点 | 方法 | 描述 | 认证要求 |
@@ -616,11 +623,17 @@ X-Admin-Password: your-admin-password
616623

617624
**查询参数:**
618625
- `name` (string, 必需): 玩家名称
626+
- `includeOffline` (boolean, 可选): 是否查询离线玩家,默认为 `false`。设置为 `true` 可以查询离线玩家的基本信息
619627

620628
**请求示例:**
621629
```bash
630+
# 查询在线玩家
622631
curl -H "X-API-Key: sk-your-api-token-here" \
623632
-X GET "http://your-server:22222/api/v1/player?name=PlayerName"
633+
634+
# 查询离线玩家
635+
curl -H "X-API-Key: sk-your-api-token-here" \
636+
-X GET "http://your-server:22222/api/v1/player?name=PlayerName&includeOffline=true"
624637
```
625638

626639
**响应示例(在线玩家):**
@@ -772,6 +785,15 @@ curl -H "X-API-Key: sk-your-api-token-here" \
772785
```
773786

774787
**错误响应示例:**
788+
```json
789+
{
790+
"success": false,
791+
"error": "玩家不在线 (提示: 使用 ?includeOffline=true 查询离线玩家)",
792+
"code": 404,
793+
"timestamp": "2025-10-02T12:00:00"
794+
}
795+
```
796+
775797
```json
776798
{
777799
"success": false,
@@ -781,6 +803,24 @@ curl -H "X-API-Key: sk-your-api-token-here" \
781803
}
782804
```
783805

806+
```json
807+
{
808+
"success": false,
809+
"error": "服务器繁忙,请稍后重试(TPS过低)",
810+
"code": 504,
811+
"timestamp": "2025-10-02T12:00:00"
812+
}
813+
```
814+
815+
```json
816+
{
817+
"success": false,
818+
"error": "查询请求过多,请稍后再试",
819+
"code": 429,
820+
"timestamp": "2025-10-02T12:00:00"
821+
}
822+
```
823+
784824
**数据字段说明:**
785825

786826
| 字段 | 类型 | 说明 |
@@ -833,10 +873,13 @@ curl -H "X-API-Key: sk-your-api-token-here" \
833873
- 生成玩家数据报告
834874

835875
**注意事项:**
836-
- 离线玩家只能获取有限的基本信息
876+
- 离线玩家只能获取有限的基本信息(需要设置 `includeOffline=true`)
837877
- 在线玩家可以获取完整的实时数据
838878
- 需要 API Token 认证才能访问
839879
- 玩家名称区分大小写
880+
- 查询在线玩家超时时间为 3 秒,离线玩家为 5 秒
881+
- 系统限制最多 5 个并发查询,超过限制将返回 429 错误
882+
- 如果服务器 TPS 过低可能返回 504 超时错误
840883

841884
### 服务器监控 API
842885

@@ -1057,6 +1100,18 @@ curl -X POST http://localhost:22222/api/v1/register \
10571100
}'
10581101
```
10591102

1103+
### 玩家数据查询示例
1104+
1105+
```bash
1106+
# 查询在线玩家数据
1107+
curl -X GET "http://localhost:22222/api/v1/player?name=PlayerName" \
1108+
-H "X-API-Key: sk-your-api-token-here"
1109+
1110+
# 查询离线玩家数据
1111+
curl -X GET "http://localhost:22222/api/v1/player?name=PlayerName&includeOffline=true" \
1112+
-H "X-API-Key: sk-your-api-token-here"
1113+
```
1114+
10601115
### 系统监控示例
10611116

10621117
```bash
@@ -1149,6 +1204,15 @@ A: 可以通过 `GET /api/v1/whitelist/stats` 查看 `uuid_pending_entries` 数
11491204
**Q: 旧的API调用还能使用吗?**
11501205
A: 是的,系统保持向后兼容,但建议使用新的简化API以获得更好的体验。
11511206

1207+
**Q: 为什么查询玩家数据时提示"玩家不在线"?**
1208+
A: 默认情况下,API 只查询在线玩家。如果需要查询离线玩家,请在 URL 中添加 `includeOffline=true` 参数。
1209+
1210+
**Q: 查询玩家数据时为什么会超时?**
1211+
A: 玩家数据查询需要在 Minecraft 主线程执行,如果服务器 TPS 过低或负载过高,可能导致超时。查询在线玩家超时时间为 3 秒,离线玩家为 5 秒。
1212+
1213+
**Q: 为什么会收到 429 错误(请求过多)?**
1214+
A: 系统限制最多同时处理 5 个玩家数据查询请求,以保护服务器性能。请稍后重试或减少并发请求数量。
1215+
11521216
---
11531217

11541218
*本文档描述了ConvenientAccess白名单管理系统的API接口。系统基于WhitelistPlus设计理念,专注于简化白名单管理流程,同时保持数据完整性和系统可靠性。*

0 commit comments

Comments
 (0)