对多个应用的记录进行批量处理
可对多个应用同时发送多个 API请求。
可使用以下API。
一次最多可同时处理20个请求。
如果其中某个API处理失败,之后的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 | 数组 | 必须 | 要批量执行的API列表。 最多20个请求。 |
requests[].method | 字符串 | 必须 | 要执行的API的HTTP方法 |
requests[].api | 字符串 | 必须 | 要执行的API的URL |
requests[].payload | 必须 | 传递给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": "POST", "api": "/k/v1/record.json", "payload": { "app": 1974, "record": { "单行文本框": { "value": "添加单行文本框。" } } } } ] }
应答
结果放在results数组内与requests同一索引的地方。
参数名称 | 类型 | 说明 |
---|---|---|
results | 数组 | 对各个 API请求的应答。 应答根据 requests的Array的排列顺序来排序。 如果有失败的API,只有该索引有结果,其后面的API不执行,直接返回 {} (空Object)。 |
成功时的范例
{ "results": [ { "id": "39", "revision": "1" }, { "revision": "3" }, { "id": "39", "revision": "1" } ] }
失败时的范例
第2个PUT请求是没有找到更新id时报错的范例。
"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": "POST", "api": "/k/v1/record.json", "payload": { "app": 1974, "record": { "单行文本框": { "value": "添加单行文本框。" } } } } ] } kintone.api(kintone.api.url('/k/v1/bulkRequest', true), 'POST', body, function(resp) { //success console.log(resp); }, function(error) { //error console.log(error); });
使用 XMLHttpRequest 请求
const 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: 'POST', api: '/k/v1/record.json', payload: { app: 1974, record: { 单行文本框: { value: '添加单行文本框。' } } } } ], // 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));