PHP Tips : HTTP_Request2 を利用した kintone REST API の扱い方

著者名: 落合 雄一 (External link)

目次

はじめに

kintone REST APIをPHPで扱う場合にはいろいろ選択肢がありますが、中でもPEARの HTTP_Request2 (External link) は有力な候補のひとつです。
ここでは、 複数のレコードを取得する例をもとに簡単なサンプルを紹介します。

HTTP_Request2 のインストール

インストールはPEARやPEAR2を使った方法のほか、最新版のtgzをダウンロードして任意の場所に解凍してもよいかと思います。
しかし、利用する際にはパスを把握しておく必要がありますので気を付けてください。

参考: PEAR のインストール方法 (External link) HTTP_Request2 のインストール方法 (External link)

サンプルコード

指定したアプリケーションのレコードを最大100件取得し、結果をダンプ出力するサンプルです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
/*
 * php sample program
 * Copyright (c) 2014 Cybozu
 * 
 * Licensed under the MIT License
 * https://opensource.org/license/mit/
 */

// HTTP_Request2
require_once 'HTTP/Request2.php';

// 認証設定
$subDomain = "your-subdomain";
$loginName = "your_login_name";
$password = "your_password";

// アプリID
$appId = 336;

// リクエストヘッダ
$header = array(
    "Host: " . $subDomain . ".cybozu.com:443",
    "Content-Type: application/json",
    "X-Cybozu-Authorization: " . base64_encode($loginName . ':' . $password)
);

try {
    // リクエスト作成
    $request = new HTTP_Request2();
    $request->setHeader($header);
    $request->setUrl("https://" . $subDomain . ".cybozu.com/k/v1/records.json");
    $request->setMethod(HTTP_Request2::METHOD_GET);
    $request->setBody(json_encode(array("app" => $appId)));
    $request->setConfig(array(
      'ssl_verify_host' => false,
      'ssl_verify_peer' => false
    ));

    // レスポンス取得
    $response = $request->send();

// HTTP_Request2のエラーを表示
} catch (HTTP_Request2_Exception $e) {
    die($e->getMessage());
// それ以外のエラーを表示
} catch (Exception $e) {
    die($e->getMessage());
}

// エラー時
if ($response->getStatus() != "200") {
  echo sprintf("status: %s\n", $response->getStatus());
  echo sprintf("cybozu error: %s\n", $response->getHeader('x-cybozu-error'));
  echo sprintf("body: \n%s\n", $response->getBody());
  die;
}

$data = json_decode($response->getBody(), true);
var_dump($data);

サンプルコードの解説

リクエスト

29
30
31
32
33
34
35
36
37
38
// リクエスト作成
$request = new HTTP_Request2();
$request->setHeader($header);
$request->setUrl("https://" . $subDomain . ".cybozu.com/k/v1/records.json");
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setBody(json_encode(array("app" => $appId)));
$request->setConfig(array(
  'ssl_verify_host' => false,
  'ssl_verify_peer' => false
));

ここでは、HTTP_Request2のインスタンスを生成し、必要な情報を設定しています。
HTTPリクエストヘッダーは、「Host」、「Content-Type」、「X-Cybozu-Authorization」の配列を指定します。
参考: PHP Tips : kintone REST API の認証設定について

また、HTTPメソッドやリクエストボディを設定しています。
参考: 複数のレコードを取得する
注意点として、HTTPメソッドはGETにしておくことをお忘れなく。
ここをPOSTにしてしまうと、 複数のレコードを登録する APIの実行になるため、エラーが発生します。

レスポンス取得部

40
41
// レスポンス取得
$response = $request->send();

この一行でkintone REST APIへリクエストを投げ、$response変数に レスポンスのオブジェクト (External link) を格納します。

複数のレコードを取得するのレスポンスような結果が得られたのではないでしょうか?

おわりに

PEARのHTTP_Request2を利用したkintone REST APIの扱い方について説明いたしました。
HTTP_Request2はかなり汎用的なHTTPクライアントライブラリーです。ぜひ使ってみてください。

information

このTipsは、2014年7月版kintoneで動作を確認しています。