外部API的执行

cybozu发表于:2016年09月13日 13:45:36更新于:2024年01月26日 15:23:05

Index

执行外部的API

在kintone自定义时,通过此API来执行外部的API。
使用此API给外部API发送请求时,可以规避跨域限制。
当把文件上传到外部时,请参照 “将文件上传到外部” 。

  • PC专用版和移动端专用版都可以使用。

  • 即使通过proxy,也不能自动发行需在proxy端的网站发行的cookie。

  • 可用的Content-Type没有限制。

函数

kintone.proxy(url, method, headers, data, successCallback, failureCallback);

参数

参数名称要指定的值必须说明
url字符串
必须请求URL
method字符串
必须HTTP方法。 GET,POST,PUT,DELETE 中任一个。
headers对象必须指定请求头对象。
未指定的时候,默认{}。
(例) {'Content-Type': 'application/json'}
data对象或字符串必须请求里包含的数据。未指定的时候,默认{}。

仅可用于POST/PUT,GET/DELETE时即使指定了也将被忽视。
在GET/DELETE的情况下、需要往URL的QueryString里传递参数。

successCallback函数
可省略

向Proxy处发送的请求,结束时执行的回调函数。
参数里赋值的是来自proxy的response body (字符串)、status code(数值)、response header(对象)。
省略的情况下,默认返回kintone.Promise对象,里面是含有response body (字符串)、status code(数字)、response header(对象)信息的数组。

failureCallback函数
可省略

发往proxy API 的请求,失败时执行的回调函数。
接受来自proxy的参数:response body (字符串)。
failureCallback省略的情况下,默认返回kintone.Promise对象,丢弃proxy API的response body (字符串)。

返回值

省略参数successCallback时,返回 kintone.Promise 对象。
参考: 事件处理的写法

指定successCallback的时候,没有返回值。

 

例子

使用call back的记述方法
kintone.proxy('https://*****.***.net', 'GET', {}, {}, function(body, status, headers) {
    //success
    console.log(status, JSON.parse(body), headers);
}, function(error) {
    //error
    console.log(error);  //显示proxy API的response body(字符串)
});
使用kintone.Promise对象的记述方法
kintone.proxy('https://*****.***.net', 'GET', {}, {}).then(function(args) {
    //success
    /*  args[0] -> body(字符串)
     *  args[1] -> status(数值)
     *  args[2] -> headers(对象)
     */
    console.log(args[1], JSON.parse(args[0]), args[2]);
}, function(error) {
    //error
    console.log(error);  //显示proxy API的response body(字符串)
});

注意事项

  • 使用url指定不存在的服务器时、应答返回状态码为「503」(DNS Cache Missing)的错误

  • 如您的环境设置了 IP 地址限制,那么使用此 JavaScript API 对同一域名的其他应用执行 kintone REST API 时,需要许可 kintone 的 IP 地址。
    关于 IP 地址,请参考cybozu.cn使用的域和IP地址
    但是,这样的话就可以通过执行外部 API 的API来自由访问  kintone 环境,因此从安全角度来说,不推荐这样的做法。
    如要访问同一域名的其他应用,请使用 kintone REST API 请求

  • 使用此 API 执行外部 API 时,外部的 API 不会自动发行原本会发行的 Cookie 。

  • 当你发送的HTTP请求为POST / PUT时,由于header里“Content-Length”和“Transfer-Encoding”会在内部自动添加,因此用户在发起请求时无需手动设置它们,否则将导致出错

限制事项

  • 关于要执行的外部 API 的应答限制如下。

    • 应答头部的上限是:最多 100行,1 行最大8192 bytes。

    • 应答正文的上限是10MB。超过上限会报错。

    • 应答正文仅可使用字符串。不可获取图片等二进制数据。

  • 无法与使用自签名证书的服务器通信。

将文件上传到外部

在kintone自定义时,可以通过此API将文件上传至外部系统。
使用此API给外部API发送请求时,可以规避跨域限制。

  • PC专用版和移动端专用版都可以使用。

  • 即使通过proxy,也不能自动发行需在proxy端的网站发行的cookie。

  • 可用的Content-Type没有限制。

函数

kintone.proxy.upload(url, method, headers, data, successCallback, failureCallback);

参数

参数名称要指定的值必须
说明
url字符串必须请求URL
method字符串必须HTTP方法。 POST,PUT中任一个。
headers对象
必须指定请求头对象。
未指定的时候,默认{}。
(例) {'Content-Type': 'application/json'}
data对象必须请求里包含的数据。
{
    'format': 向 proxy 上传数据时使用的格式,
    'value': 上传的数据
}
format 是字符串、只能指定 "RAW"。
value 是Blob型 (包括 File型) 的值。value的大小最多为 200MB。
successCallback函数
可省略

向Proxy处发送的请求,结束时执行的回调函数。
参数里赋值的是来自proxy的response body (字符串)、status code(数字)、response header(对象)。
省略的情况下,默认返回kintone.Promise对象,里面是含有response body (字符串)、status code(数字)、response header(对象)信息的数组。

failureCallback函数
可省略

发往proxy API 的请求,失败时执行的回调函数。
接受来自proxy的参数:response body (字符串)。
failureCallback省略的情况下,默认返回kintone.Promise对象,丢弃proxy API的response body (字符串)。

返回值

省略参数 successCallback 时,返回 kintone.Promise 对象。
参考: 事件处理的写法

指定 successCallback 的时候,没有返回值。 

例子

使用回调函数的记述方法
var data = {
    'format': 'RAW',
    'value': <some blob object>
}

kintone.proxy.upload('https://*****.***.net', 'POST', {}, data, function(body, status, headers) {
    //success
    console.log(status, JSON.parse(body), headers);
}, function(error) {
    //error
    console.log(error);  //显示proxy API的response body(字符串)
});
使用kintone.Promise对象的记述方法
var data = {
    'format': 'RAW',
    'value': <some blob object>
}

kintone.proxy.upload('https://*****.***.net', 'POST', {}, data).then(function(args) {
    //success
    /*  args[0] -> body(字符串)
     *  args[1] -> status(数值)
     *  args[2] -> headers(对象)
     */
    console.log(args[1], JSON.parse(args[0]), args[2]);
}, function(error) {
    //error
    console.log(error);  //显示proxy API的response body(字符串)
});

注意事項

  • 使用url指定不存在的服务器时、应答返回状态码为「503」(DNS Cache Missing)的错误。

  • 如您的环境设置了 IP 地址限制,那么使用此 JavaScript API 对同一域名的其他应用执行 kintone REST API 时,需要许可 kintone 的 IP 地址。
    关于 IP 地址,请参考cybozu.cn使用的域和IP地址
    但是,这样的话就可以通过执行外部 API 的API来自由访问  kintone 环境,因此从安全角度来说,不推荐这样的做法。

  • 使用此 API 执行外部 API 时,外部的 API 不会自动发行原本会发行的 Cookie 。

  • 当你发送的HTTP请求为POST / PUT时,由于header里“Content-Length”和“Transfer-Encoding”会在内部自动添加,因此用户在发起请求时无需手动设置它们,否则将导致出错。

  • 对于可使用的 "Content-Type"没有限制。

限制事项

  • 关于要执行的外部 API 的应答限制如下。

    • 应答头部的上限是:最多 100行,1 行最大8192 bytes。

    • 应答正文的上限是10MB。超过上限会报错。

    • 应答正文仅可使用字符串。不可获取图片等二进制数据。

  • 无法与使用自签名证书的服务器通信。

  • 对象浏览器与操作环境中的 Web 浏览器(日文)相同。

相关技巧(Tips)