对多个应用的记录进行批量处理
可对多个应用同时发送多个 API请求。
可使用以下API。
一次最多可同时处理20个请求。
如果其中某个API处理失败,回滚所有的处理。
可通过密码验证来执行。
使用API令牌验证操作多个应用时,请指定各个应用发行的API令牌。
指定API令牌的方法请参考API令牌验证。
HTTP 方法
POST
URI
https://(子域名).cybozu.cn/k/v1/bulkRequest.json
来宾空间内的应用
https://(子域名).cybozu.cn/k/guest/<空间的ID>/v1/bulkRequest.json
仅可批量更新同一个来宾空间内的应用,不可执行以下处理。
批量更新不同来宾空间内的应用
批量更新来宾空间及普通空间内的应用
批量更新来宾空间内的应用及非空间内的应用
必要的访问权限
以要执行的API的必要权限为准。
请求参数
参数名称 | 要指定的值 | 必须 | 说明 |
---|---|---|---|
requests | 数组 | 必须 | 要批量调用的请求。最多20个。 |
requests[].method | 字符串 | 必须 | 要调用的API方法 |
requests[].api | 字符串 | 必须 | 要调用的API路径
|
requests[].payload | 必须 | 传递给API的参数。内容及类型以要调用的API为准 |
请求的范例
请求头部
POST /k/v1/bulkRequest.json HTTP/1.1 Host: example.cybozu.cn:443 X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU= Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU= Content-Type: application/json
请在Content-Type中指定application/json。如不指定,JSON无法识别 ,执行时将报错。
正文
{ "requests": [ { "method": "POST", "api": "/k/v1/record.json", "payload": { "app": 1972, "record": { "单行文本框": { "value": "添加单行文本框。" } } } }, { "method": "PUT", "api": "/k/v1/record.json", "payload": { "app": 1973, "id": 33, "revision": 2, "record": { "单行文本框": { "value": "更新单行文本框。" } } } }, { "method": "DELETE", "api": "/k/v1/records.json", "payload": { "app": 1974, "ids": [ 10, 11 ], "revisions": [ 1, 1 ] } } ] }
应答
结果放在results数组内与requests同一索引的地方。
参数名称 | 类型 | 说明 |
---|---|---|
results | 数组 | 对各个 API请求的应答。应答根据 requests的Array的排列顺序来排序。 |
成功时的范例
{ "results": [ { "id": "39", "revision": "1" }, { "revision": "34" }, {} ] }
失败时的范例
第2个PUT请求是没有找到更新id时报错的范例。 如果有失败的API,只有该索引有结果,其后面的API不执行,直接返回 {} (空Object)。
{ "results": [ {}, { "message": "找不到相应的记录(id: 33)。", "id": "1505999166-1940353231", "code": "GAIA_RE01" }, {} ] }
JavaScript 范例
使用API请求发送 kintone REST API 请求
var body = { "requests": [ { "method": "POST", "api": "/k/v1/record.json", "payload": { "app": 1972, "record": { "单行文本框": { "value": "添加单行文本框。" } } } }, { "method": "PUT", "api": "/k/v1/record.json", "payload": { "app": 1973, "id": 33, "revision": 2, "record": { "单行文本框": { "value": "添加单行文本框。" } } } }, { "method": "DELETE", "api": "/k/v1/records.json", "payload": { "app": 1974, "ids": [ 10, 11 ], "revisions": [ 1, 1 ] } } ] } kintone.api(kintone.api.url('/k/v1/bulkRequest', true), 'POST', body, function(resp) { //success console.log(resp); }, function(error) { //error console.log(error); });
使用 XMLHttpRequest 请求
var body = { "requests": [ { "method": "POST", "api": "/k/v1/record.json", "payload": { "app": 1972, "record": { "单行文本框": { "value": "添加单行文本框。" } } } }, { "method": "PUT", "api": "/k/v1/record.json", "payload": { "app": 1973, "id": 33, "revision": 2, "record": { "单行文本框": { "value": "添加单行文本框。" } } } }, { "method": "DELETE", "api": "/k/v1/records.json", "payload": { "app": 1974, "ids": [ 10, 11 ], "revisions": [ 1, 1 ] } } ], // CSRF TOKEN: 在kintone中执行API(POST, PUT, DELETE)时需要设置 "__REQUEST_TOKEN__": kintone.getRequestToken() }; var url = 'https://{subdomain}.cybozu.cn/k/v1/bulkRequest.json'; var xhr = new XMLHttpRequest(); xhr.open('POST', url); xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onload = function() { if (xhr.status === 200) { // success console.log(JSON.parse(xhr.responseText)); } else { // error console.log(JSON.parse(xhr.responseText)); } }; xhr.send(JSON.stringify(body));