API 调用文档

基础配置

  • 基础URL: https://adminapi.mas.bggimg.com
  • 认证方式: 签名认证(基于 appIdappSecrettimestampnonce 生成)

认证机制

每个 API 请求都需要在 headers 中包含以下认证信息:

签名生成规则

  1. 将所有请求参数按键名排序
  2. 拼接成 key=value& 格式字符串
  3. 追加 nonce=随机字符串&timestamp=时间戳应用密钥
  4. 对最终字符串进行 MD5 加密
// 签名生成函数
function generateHeaders(params) {
    const timestamp = Math.floor(Date.now() / 1000).toString();
    const nonce = Math.random().toString(36).substring(2, 10);

    // 构建待签名字符串
    const sortedParams = Object.keys(params).sort().reduce((obj, key) => {
        obj[key] = params[key];
        return obj;
    }, {});

    let signString = '';
    Object.keys(sortedParams).forEach(key => {
        signString += `${key}=${sortedParams[key]}&`;
    });

    signString += `nonce=${nonce}&timestamp=${timestamp}${appSecret}`;

    // 计算MD5签名
    const sign = crypto.createHash('md5').update(signString).digest('hex');

    return {
        'sign': sign,
        'timestamp': timestamp,
        'nonce': nonce,
        'appId': appId
    };
}

API 接口列表

1. 获取机器列表

  • 接口地址: /api/open/machines
  • 请求方法: GET
  • 请求参数: 无
  • 调用方法: getMachines()
async function getMachines() {
    try {
        const params = {};
        const headers = generateHeaders(params);
        const response = await axios.get(`${baseUrl}/api/open/machines`, {
            headers: headers
        });
        return response.data;
    } catch (error) {
        // 错误处理
        throw error;
    }
}

2. 获取记录数据

  • 接口地址: /api/open/records
  • 请求方法: GET
  • 请求参数:

    • start: 开始时间(格式: 'YYYY-MM-DD HH:mm')
    • machineId: 机器ID
  • 调用方法: getRecords(start, machineId)

async function getRecords(start, machineId) {
    try {
        const params = {
            start: start,
            machineId: machineId
        };

        const headers = generateHeaders(params);
        const response = await axios.get(`${baseUrl}/api/open/records`, {
            params: params,
            headers: headers
        });

        return response.data;
    } catch (error) {
        // 错误处理
        throw error;
    }
}

使用示例

// 主函数调用示例
async function main(){
    // 获取机器列表
    const machineList = await getMachines();
    console.log(machineList);

    // 获取指定机器的记录数据
    const start = '2025-10-01 00:00';
    const machineId = 884;
    getRecords(start, machineId)
        .then(data => {
            console.log('Successfully retrieved records');
        })
        .catch(error => {
            console.error('Failed to retrieve records');
        });
}

错误处理

所有 API 调用都包含完整的错误处理机制,会分别处理 HTTP 响应错误和其他网络错误,并输出详细错误信息到控制台。

results matching ""

    No results matching ""