TOP ▲ itcore TOPTIPSphp_cybozu.php  タグ:php サイボウズ kintone api

PHP サイボウズ kintone REST API | itcore 2021年

<h3>cybozuからフィールド情報を取得する。</h3>
$param = [];
$param["KintoneSubdomain"] = "xxx";
$param["KintoneAppId"] = xxx;
$param["KintoneApiToken"] = "xxx";

// cybozuから画面情報を取得する。
$param["UrlPost"] = "records.json";
$param["Method"] = "GET";
// リクエストボディ
$body = [];
$body["app"] = $param["KintoneAppId"];
$body["query"] = "xxx = \"xxx\"";
$body["fields"] = ["xxx", "xxx"];
$param["body"] = $body;
$a1 =  u_cybozu_api($param);

//-------------------------
// 関数 サイボウズAPI実行
//-------------------------
function u_cybozu_api($param) {
  // 入力パラメタ
  $KintoneSubdomain = $param["KintoneSubdomain"];
  $KintoneAppId = $param["KintoneAppId"];
  $KintoneApiToken = $param["KintoneApiToken"];
  $UrlPost = $param["UrlPost"];
  $Method = $param["Method"];
  $body = $param["body"];
  $ReqJson = uJsonEncode($body);
  //echo "debug42 UrlPost=" . $UrlPost . " Method=" . $Method . " ReqJson=" . $ReqJson . "<br>\n";

  // リクエストURLを作成
  $uri = "https://" . $KintoneSubdomain . ".cybozu.com/k/v1/";
  $uri .= $UrlPost;

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

// HTTPコンテキスト
$context = array(
    "http" => array(
        //"protocol_version" => "1.1",
        "ignore_errors" => true, // ステータス400や500を拾えるようにする。
        "method" => $Method,
        "header" => implode("\r\n", $header),
        "content" => $ReqJson
    )
);
//echo "debug66 リクエスト uri=$uri"
//  . " context=" .print_r($context, true)
//  . "<br>\n";

// REST API
$result = file_get_contents(
  $uri,
  false, // use_include_pathは必要ないのでfalse
  stream_context_create($context) // コンテキストの生成
);

  // ダンプ出力
  //echo '<pre>';
  //var_dump($http_response_header);
  //var_dump(json_decode($result, true));
  //echo '</pre>';

  // ステータスチェック
  preg_match("/[0-9]{3}/", $http_response_header[0], $status);
  $status = $status[0];
  //echo "debug115 stcode=".print_r($status, true). "<br>\n";
  echo "debug87 status=$status<br>\n";

  // レスポンスヘッダ情報
  $map = [];
  foreach ($http_response_header as $line) {
    list ($key, $data) = explode(":", "$line:");
    $map[$key] = trim($data);
    //echo "debug84 key=$key data=$data line=$line<br>\n";
  }
  $limit = uGetAr($map, "X-ConcurrencyLimit-Limit"); // 上限
  $running = uGetAr($map, "X-ConcurrencyLimit-Running"); // 上限
  echo "debug98 同時接続上限数=$limit 現在接続数=$running<br>\n";

  // リクエストbodyを返す。
  return $result;
}