API调用格式

HAMI_8365641473 · 4 小时前

回答

Hamibot AI
1
· 4 小时前

Hamibot 的 http 模块提供了标准的 HTTP 客户端功能,支持 GET、POST、JSON 提交、 multipart 文件上传等多种请求方式。以下是详细的 API 调用格式说明。

1. 通用调用结构

大多数 HTTP 请求函数遵循以下参数结构:

// 文档地址 https://docs.hamibot.com/
http.method(url[, data/options, callback])
  • url <String>:请求地址,必须以 http://https:// 开头。
  • data <Object>|<String>:POST 请求时的数据内容。
  • options <Object>:请求选项,可配置头部信息、请求方法等。
  • callback <Function>:回调函数,参数为 Response 对象。如果不提供回调,请求将同步阻塞执行。

2. 常用请求方法

HTTP GET 请求

用于获取数据。

// 文档地址 https://docs.hamibot.com/
var url = 'https://api.example.com/data';
var res = http.get(url);
if (res.statusCode == 200) {
    log(res.body.string());
}

HTTP POST 请求

用于提交表单数据。

// 文档地址 https://docs.hamibot.com/
var url = 'https://api.example.com/submit';
var data = {
    key1: 'value1',
    key2: 'value2'
};
var res = http.post(url, data);
log(res.body.string());

HTTP POST JSON 请求

自动将数据对象序列化为 JSON 字符串,并设置 Content-Type 为 application/json

// 文档地址 https://docs.hamibot.com/
var url = 'https://api.example.com/json';
var jsonData = {
    id: 123,
    name: 'test'
};
var res = http.postJson(url, jsonData);
log(res.body.json());

HTTP Multipart 请求

用于文件上传或混合表单提交。

// 文档地址 https://docs.hamibot.com/
var url = 'https://api.example.com/upload';
// 格式 1: 直接传入文件对象
var res = http.postMultipart(url, {
    file: open('/sdcard/1.txt')
});
// 格式 2: 附带非文件参数
var res2 = http.postMultipart(url, {
    appId: 'abcdefghijk',
    file: open('/sdcard/1.txt')
});
log(res2.body.string());

通用 HTTP 请求

允许自定义请求方法(PUT、DELETE 等)和更多选项。

// 文档地址 https://docs.hamibot.com/
var url = 'https://api.example.com/resource';
var options = {
    method: 'PUT',
    headers: {
        'Authorization': 'Bearer token123'
    },
    contentType: 'application/json'
};
var data = {
    status: 'updated'
};
var res = http.request(url, data, options);
log('code = ' + res.statusCode);

3 请求选项 (Options)

options 对象支持以下常用属性:

  • headers <Object>:HTTP 头部信息,键值对形式。
  • method <String>:HTTP 请求方法,包括 "GET", "POST", "PUT", "DELETE", "PATCH"。
  • contentType <String>:设置 "Content-Type" 头部,例如 "text/plain", "application/json"。

4. 响应对象 (Response)

请求完成后返回的 Response 对象包含以下主要属性和方法:

  • statusCode <int>:HTTP 状态码(如 200, 404)。
  • statusMessage <String>:状态消息。
  • body <Object>:响应体对象。
    • string():返回响应内容的字符串形式。
    • json():尝试将响应内容解析为 JSON 对象。
    • bytes():返回响应内容的字节数组。

5. 异步回调示例

如果不希望阻塞脚本执行,可以传入回调函数。注意使用标准函数声明以保持兼容性。

// 文档地址 https://docs.hamibot.com/
var url = 'https://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp';
http.get(url, {}, function(res) {
    if (res.statusCode != 200) {
        log('请求失败:' + res.statusCode);
    } else {
        log(res.body.json());
    }
});

6. 注意事项

  • 脚本运行环境基于 Rhino 1.7.15,编写代码时请勿使用箭头函数表达式或函数默认参数。
  • 所有 URL 必须包含协议头(http://https://),否则默认补全为 http://
  • 同步请求会阻塞脚本后续执行,直到请求完成或超时;异步请求通过回调处理结果。
ℹ️ 本回答由 AI 生成,内容仅供参考