Skip to content

Instantly share code, notes, and snippets.

@ykws
Created October 27, 2017 01:05
Show Gist options
  • Save ykws/cf8411e1e64555b9658d640ac4c00dd8 to your computer and use it in GitHub Desktop.
Save ykws/cf8411e1e64555b9658d640ac4c00dd8 to your computer and use it in GitHub Desktop.
api-database_operations.php
<?php
/**
* [ 概要 ]
* スパイラルのAPIを使ったサンプルプログラムです。
*
* [ サンプルで行う事 ]
* - データベースの検索、レコード更新、レコード削除
*
* UTF8で保存してください。
*/
/**
* [サンプルを動かすための準備]
*
* 1. PHPにcurlライブラリが組み込まれている必要があります。
* 参考:http://www.php.net/manual/ja/intro.curl.php
*
* 2. スパイラルの操作画面の「DBグループ」「通常DB管理」で、以下のような構成でDBを発行します。
*
* DBタイトル:
* member
*
* フィールド:
* No1 フィールド名  :登録日時
* フィールドタイプ:登録日時
* 差替えキーワード:registDate
*
* No2 フィールド名  :メールアドレス
* フィールドタイプ:メールアドレス(大・小文字を無視)
* 差替えキーワード:email
*
* No3 フィールド名  :パスワード
* フィールドタイプ:メッセージダイジェスト(SHA256)
* 差替えキーワード:pass
*
* No4 フィールド名  :氏名
* フィールドタイプ:テキストフィールド(64 bytes)
* 差替えキーワード:name
*
*/
// ロケータのURL (変更の必要はありません)
$locator = "http://www.pi-pe.co.jp/api/locator";
// スパイラルの操作画面で発行したトークンを設定します。
$TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
$SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
// API用のHTTPヘッダ
$api_headers = array(
"X-SPIRAL-API: locator/apiserver/request",
"Content-Type: application/json; charset=UTF-8",
);
// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
// 送信用のJSONデータを作成します。
$json = json_encode($parameters);
// curlライブラリを使って送信します。
$curl = curl_init($locator);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST , true);
curl_setopt($curl, CURLOPT_POSTFIELDS , $json);
curl_setopt($curl, CURLOPT_HTTPHEADER , $api_headers);
curl_exec($curl);
// エラーがあればエラー内容を表示
if (curl_errno($curl)) echo curl_error($curl);
$response = curl_multi_getcontent($curl);
curl_close($curl);
$response_json = json_decode($response , true);
// サービス用のURL
$APIURL = $response_json['location'];
// -----------------------------------------------------------------------------
// select
// -----------------------------------------------------------------------------
// API用のHTTPヘッダ
$api_headers = array(
"X-SPIRAL-API: database/select/request",
"Content-Type: application/json; charset=UTF-8",
);
// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
$parameters["db_title"] = "member"; //DBのタイトル
$parameters["passkey"] = time(); //エポック秒
// 表示カラム名
$parameters["select_columns"] = array("email", "name");
// 検索条件
$parameters["search_condition"] = array(
array("name" => "email", "value" => "@example.com", "operator" => "@="),
);
// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$parameters["signature"] = hash_hmac('sha1', $key, $SECRET, false);
// 送信用のJSONデータを作成します。
$json = json_encode($parameters);
echo "===> database/select\n";
// curlライブラリを使って送信します。
$curl = curl_init($APIURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST , true);
curl_setopt($curl, CURLOPT_POSTFIELDS , $json);
curl_setopt($curl, CURLOPT_HTTPHEADER , $api_headers);
curl_exec($curl);
// エラーがあればエラー内容を表示
if (curl_errno($curl)) echo curl_error($curl);
$response = curl_multi_getcontent($curl);
curl_close($curl);
// 画面に表示
print_r(json_decode($response, true));
// -----------------------------------------------------------------------------
// update
// -----------------------------------------------------------------------------
// API用のHTTPヘッダ
$api_headers = array(
"X-SPIRAL-API: database/update/request",
"Content-Type: application/json; charset=UTF-8",
);
// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
$parameters["db_title"] = "member"; //DBのタイトル
$parameters["passkey"] = time(); //エポック秒
// 検索条件
$parameters["search_condition"] = array(
array("name" => "registDate", "value" => "2014/01/01", "operator" => ">="),
array("name" => "registDate", "value" => "2014/12/31", "operator" => "<="),
);
// 更新データ
$parameters["data"] = array(
array("name" => "registDate", "value" => "now"),
);
// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$parameters["signature"] = hash_hmac('sha1', $key, $SECRET, false);
// 送信用のJSONデータを作成します。
$json = json_encode($parameters);
echo "===> database/update\n";
// curlライブラリを使って送信します。
$curl = curl_init($APIURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST , true);
curl_setopt($curl, CURLOPT_POSTFIELDS , $json);
curl_setopt($curl, CURLOPT_HTTPHEADER , $api_headers);
curl_exec($curl);
// エラーがあればエラー内容を表示
if (curl_errno($curl)) echo curl_error($curl);
$response = curl_multi_getcontent($curl);
curl_close($curl);
// 画面に表示
print_r(json_decode($response, true));
// -----------------------------------------------------------------------------
// delete
// -----------------------------------------------------------------------------
// API用のHTTPヘッダ
$api_headers = array(
"X-SPIRAL-API: database/delete/request",
"Content-Type: application/json; charset=UTF-8",
);
// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
$parameters["db_title"] = "member"; //DBのタイトル
$parameters["passkey"] = time(); //エポック秒
// 検索条件
$parameters["search_condition"] = array(
array("name" => "name", "value" => "%桃子", "operator" => "LIKE"),
);
// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$parameters["signature"] = hash_hmac('sha1', $key, $SECRET, false);
// 送信用のJSONデータを作成します。
$json = json_encode($parameters);
echo "===> database/delete\n";
// curlライブラリを使って送信します。
$curl = curl_init($APIURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST , true);
curl_setopt($curl, CURLOPT_POSTFIELDS , $json);
curl_setopt($curl, CURLOPT_HTTPHEADER , $api_headers);
curl_exec($curl);
// エラーがあればエラー内容を表示
if (curl_errno($curl)) echo curl_error($curl);
$response = curl_multi_getcontent($curl);
curl_close($curl);
// 画面に表示
print_r(json_decode($response, true));
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment