外部のAPIを実行する

目次

外部のAPIを実行する

kintoneから外部サービスのAPIを実行します。
このAPIを利用すると、クロスドメイン制約を回避して、外部APIにリクエストを送信できます。
外部にファイルをアップロードする際には、次のページを参照してください。
外部にファイルをアップロードする

関数

PC/モバイル

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

引数

引数 必須 説明
url 文字列 必須 実行するAPIのURL
method 文字列 必須 APIの実行に使用するHTTPメソッド
次のいずれかの値を指定します。
  • GET
  • POST
  • PUT
  • DELETE
headers オブジェクト 必須 リクエストヘッダー
例:
{
"Content-Type": "application/json"
}
何も指定しない場合は{}を指定してください。
data オブジェクトまたは文字列 必須 リクエストボディ
何も指定しない場合は{}を指定してください。
HTTPメソッドにPOSTやPUTを指定したときだけ送信されます。
HTTPメソッドがGETやDELETEのリクエストで、リクエストボディを指定したい場合には、urlのクエリ文字列として指定してください。
successCallback 関数 省略可 リクエストが完了したときに実行されるコールバック関数
コールバック関数の引数には、次の情報が渡されます。
  • 第1引数:レスポンスボディ(文字列)
  • 第2引数:ステータスコード(数値)
  • 第3引数:レスポンスヘッダー(オブジェクト)
省略すると、Promiseオブジェクトが返り、レスポンスボディ、ステータスコード、レスポンスヘッダーが格納された配列で解決されます。
failureCallback 関数 省略可 リクエストが失敗した時に実行されるコールバック関数
省略すると、Promiseオブジェクトが返り、プロキシAPIのレスポンスボディ(文字列)で棄却されます。

戻り値

successCallbackを指定した場合、戻り値はありません。
引数のsuccessCallback以降を省略した場合、Promiseオブジェクトが返ります。
これにより、async/awaitを使って非同期処理を扱うことができます。

サンプルコード

コールバックを使った記述方法
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
kintone.proxy(
  'https://api.example.com',
  'GET',
  {},
  {},
  (body, status, headers) => {
    // success
    console.log(status, body, headers);
  },
  (error) => {
    // error
    console.log(error); // proxy APIのレスポンスボディ(文字列)を表示
  }
);
Promiseオブジェクトを使った記述方法
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
try {
  const [body, status, headers] = await kintone.proxy(
    'https://api.example.com',
    'GET',
    {},
    {}
  );
  // success
  console.log(status, body, headers);
} catch (error) {
  // error
  console.log(error); // proxy APIのレスポンスボディ(文字列)を表示
}

注意事項

  • 存在しないサーバーをurlに指定した場合、ステータスコード「503」(DNS Cache Missing)のエラーが返ります。
  • IPアドレス制限を設定している場合、このJavaScript APIを使って同一ドメインの別アプリに対しkintone REST APIを実行するには、kintoneのIPアドレスを許可してください。
    IPアドレスの詳細は、次のページを参照してください。
    cybozu.comが使用するドメインとIPアドレス (External link)
    ただし、外部APIを実行するAPIを通じてすべてのkintone環境から自由にアクセスできるようになるため、セキュリティの観点から推奨していません。
    同一ドメインに対するリクエストは、次のAPIを使用してください。
    kintone REST APIリクエストを送信するAPI
  • このAPIを使って外部のAPIを実行しても、実行したAPI先で発行されるべきCookieは、自動で発行されません。
  • HTTPメソッドにPOSTまたはPUTを指定した場合、「Content-Length」と「Transfer-Encoding」ヘッダーは自動で付加されます。
    リクエストするときに明示的に指定すると、エラーが発生します。
  • 利用できる「Content-Type」に制限はありません。

制限事項

  • 実行する外部APIのレスポンスに関する制限は、次のとおりです。
    • レスポンスヘッダーの上限は、100行で、1行あたりの最大長は8,180bytesです。
    • レスポンスボディの上限は10MBです。上限を超えるとエラーになります。
    • レスポンスボディは文字列のみ対応しています。画像などのバイナリデータは取得できません。
  • 自己証明書を使ったサーバーとの通信はできません。