📖 API接口文档
奇迹农场数据管理服务器提供RESTful API接口,支持多种数据格式和认证方式。
ℹ️ 基础信息
- 服务器地址: http://118.31.22.178:5000
- API版本: v1
- 支持格式: JSON, Form Data, Raw Data
- 字符编码: UTF-8
- CORS支持: 已启用
📥 数据获取接口
接口信息
| URL: | /api/data |
| 方法: | GET |
| 认证: | 需要访问密钥 |
| 内容类型: | application/json |
返回数据字段
- 🌤️ weather (天气)
- 🌦️ events (天气事件)
- 🌱 seed_shop (种子商店)
- 🥚 pet_egg_shop (宠物蛋商店)
- 🔧 tool_shop (工具商店)
⚠️ 访问限制
- 频率限制: 连续10次请求间隔小于1秒将自动停用密钥
- IP限制: 1分钟内不同IP使用同一密钥将自动停用
- 建议间隔: 每次请求间隔至少2秒
- 密钥格式: 7位大写字母和数字组合
JavaScript 获取示例
推荐方式: URL参数
// 获取游戏数据
async function getData() {
var accessKey = 'ABC123D'; // 替换为你的访问密钥
try {
var response = await fetch('/api/data?access_key=' + accessKey);
var result = await response.json();
if (result.success) {
// 获取成功,处理数据
var weather = result.weather; // 天气
var events = result.events; // 天气事件
var seedShop = result.seed_shop; // 种子商店
var petEggShop = result.pet_egg_shop; // 宠物蛋商店
var toolShop = result.tool_shop; // 工具商店
console.log('天气:', weather);
console.log('事件:', events);
} else {
// 获取失败
console.error('错误:', result.message);
// 常见错误处理
if (result.message.indexOf('停用') !== -1) {
alert('密钥已被停用,请联系管理员');
} else if (result.message.indexOf('过期') !== -1) {
alert('密钥已过期,请申请新密钥');
}
}
} catch (error) {
console.error('网络错误:', error);
}
}
完整响应示例
{
"success": true,
"weather": "流星雨",
"events": "低概率获得流星突变 4分56秒后结束",
"seed_shop": "皇后菠萝",
"pet_egg_shop": "红色宠物蛋",
"tool_shop": "高级铲子"
}
错误响应示例
密钥不存在
{"success": false, "message": "密钥不存在"}
密钥已停用
{"success": false, "message": "密钥已停用"}
频率异常
{"success": false, "message": "访问频率异常,密钥已自动停用"}
🚀 实时数据演示
当前服务器数据
🔑
请输入有效的访问密钥(7位大写字母和数字)
🌤️ 天气信息
输入密钥后点击"获取数据"
🌦️ 天气事件
输入密钥后点击"获取数据"
🌱 种子商店
输入密钥后点击"获取数据"
🥚 宠物蛋商店
输入密钥后点击"获取数据"
🔧 工具商店
输入密钥后点击"获取数据"
⚠️ 错误代码说明
| 状态码 | 错误类型 | 说明 | JavaScript 处理 |
|---|---|---|---|
| 200 | 成功 | 请求处理成功 | if (result.success) { ... } |
| 400 | 请求错误 | 请求参数有误或格式错误 | console.error(result.message) |
| 401 | 认证失败 | 密钥无效或已过期 | alert('请检查密钥') |
| 500 | 服务器错误 | 服务器内部错误 | console.error('服务器错误') |
错误处理示例
// 完整的错误处理示例
async function handleApiRequest() {
try {
const response = await fetch('/api/upload', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ upload_key: 'UPLOAD01', weather: '晴天' })
});
// 检查HTTP状态码
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}
const result = await response.json();
// 检查业务逻辑结果
if (result.success) {
console.log('✅ 操作成功:', result.message);
return result;
} else {
console.error('❌ 操作失败:', result.message);
// 根据错误类型进行不同处理
if (result.message.includes('密钥')) {
alert('请检查上传密钥是否正确');
} else if (result.message.includes('格式')) {
alert('请检查数据格式是否正确');
} else {
alert('操作失败: ' + result.message);
}
return null;
}
} catch (error) {
console.error('🔥 网络错误:', error);
if (error.name === 'TypeError') {
alert('网络连接失败,请检查服务器是否正常运行');
} else {
alert('请求失败: ' + error.message);
}
return null;
}
}
💡 使用说明
📋 基本信息
- 密钥格式:7位大写字母和数字
- 密钥有时效性,过期需重新申请
- 空字段返回空字符串
- 支持CORS跨域请求
⚠️ 重要限制
- 请求间隔:至少2秒
- 频率限制:10次/9秒内触发封禁
- IP限制:1分钟内换IP触发封禁
- 一人一密钥:禁止共享密钥
推荐代码(带频率控制)
// 带频率控制的数据获取
var lastRequestTime = 0;
var minInterval = 2000; // 最小间隔2秒
async function getGameData(accessKey) {
// 检查请求间隔
var now = Date.now();
if (now - lastRequestTime < minInterval) {
console.warn('请求过于频繁,请稍后再试');
return null;
}
lastRequestTime = now;
try {
var response = await fetch('/api/data?access_key=' + accessKey);
var result = await response.json();
if (result.success) {
return result.data;
} else {
console.error('获取失败:', result.message);
return null;
}
} catch (error) {
console.error('网络错误:', error);
return null;
}
}
// 使用示例
getGameData('ABC123D').then(function(data) {
if (data) {
console.log('天气:', data.weather);
console.log('事件:', data.events);
}
});
🚫 禁止行为
- 禁止将密钥分享给他人使用
- 禁止使用脚本频繁请求(刷接口)
- 禁止在多个设备同时使用同一密钥
- 违规将导致密钥自动停用
💡 密钥被停用怎么办?
如果密钥被自动停用,请联系管理员在后台重新启用,或申请新密钥。