|
|
| 第43行: |
第43行: |
|
| |
|
| [[Category:服务器信息]] | | [[Category:服务器信息]] |
| == 🌐 公开 API ==
| |
| 项目已实现公开 API 端点,'''完全不暴露后端源站 IP''',可被任何前端、机器人或面板调用。
| |
|
| |
| === 端点 ===
| |
| {| class="wikitable"
| |
| |-
| |
| ! 端点 !! 方法 !! 说明
| |
| |-
| |
| | <code>/api/public</code> || GET || 隐藏 IP 的聚合状态(推荐外部调用)
| |
| |-
| |
| | <code>/api/status</code> || GET || 完整状态(包含后端地址,内部使用)
| |
| |-
| |
| | <code>/api/history</code> || GET || 历史数据(支持 <code>?hours=</code> 参数)
| |
| |-
| |
| | <code>/api/uptime</code> || GET || 在线率统计(支持 <code>?hours=</code> 参数)
| |
| |}
| |
|
| |
| === 调用方式 ===
| |
| 基础调用:
| |
| <pre>curl https://mc.suanlemon.cc/api/public</pre>
| |
|
| |
| 指定时间范围(最近24小时):
| |
| <pre>curl https://mc.suanlemon.cc/api/history?hours=24</pre>
| |
|
| |
| 在线率统计(最近7天):
| |
| <pre>curl https://mc.suanlemon.cc/api/uptime?hours=168</pre>
| |
|
| |
| === 响应示例 ===
| |
|
| |
| '''GET /api/public''' — 隐藏源站 IP:
| |
| <pre>{
| |
| "total_online": 32,
| |
| "servers": [
| |
| {"name": "大厅", "online": 13},
| |
| {"name": "生存", "online": 15},
| |
| {"name": "游戏", "online": 0},
| |
| {"name": "创造", "online": 4}
| |
| ]
| |
| }</pre>
| |
|
| |
| '''GET /api/history?hours=24''' — 历史数据:
| |
| <pre>{
| |
| "timestamps": ["2026-05-16 00:00:00", "2026-05-16 00:01:00", ...],
| |
| "total": [30, 32, 28, ...],
| |
| "servers": [[10,12,0,8], [11,13,0,8], ...]
| |
| }</pre>
| |
|
| |
| === 前端集成 ===
| |
| <syntaxhighlight lang="javascript">
| |
| // JavaScript/TypeScript 调用示例
| |
| async function fetchServerStatus() {
| |
| const response = await fetch('https://mc.suanlemon.cc/api/public', {
| |
| mode: 'cors' // 跨域已支持
| |
| });
| |
| const data = await response.json();
| |
| console.log(`总在线: ${data.total_online}`);
| |
| data.servers.forEach(server => {
| |
| console.log(`${server.name}: ${server.online} 人`);
| |
| });
| |
| }
| |
| </syntaxhighlight>
| |