この記事では Record / Record (bulk) のメソッドごとに、サンプルコードをまとめています。
SPIRAL ver.2 でAPIを使用する時の参考になれば幸いです。
APIメソッドごとの権限設定方法まとめ Record / Record (bulk)と合わせてご参照ください。
SPIRAL ver.2 でAPIを使用する時の参考になれば幸いです。
APIメソッドごとの権限設定方法まとめ Record / Record (bulk)と合わせてご参照ください。
はじめに
この記事で紹介するサンプルコードでは、共通のcurl送信用モジュールを使用しています。
そのため、必ず下記のモジュールを記載するようにしてください。
※共通モジュールなので、APIメソッドを複数回実行する場合でも1回だけ記載すれば大丈夫です。
※APIメソッドを複数回実行する場合は、サンプルコードの「API実行」部分に適宜記述を追加してください。
そのため、必ず下記のモジュールを記載するようにしてください。
※共通モジュールなので、APIメソッドを複数回実行する場合でも1回だけ記載すれば大丈夫です。
※APIメソッドを複数回実行する場合は、サンプルコードの「API実行」部分に適宜記述を追加してください。
共通モジュール
class CommonBase { /** * シングルトンインスタンス * @var UserManager */ protected static $singleton; public function __construct() { if (self::$singleton) { throw new Exception('must be singleton'); } self::$singleton = $this; } /** * シングルトンインスタンスを返す * @return UserManager */ public static function getInstance() { if (!self::$singleton) { return new CommonBase(); } else { return self::$singleton; } } /** * V2用 API送信ロジック * @return Result */ function apiCurlAction($method, $addUrlPass, $data = null) { $header = array( "Authorization:Bearer ". API_KEY, "Content-Type:application/json", "X-Spiral-Api-Version: 1.1", ); if(APP_ROLE){ $header = array_merge($header,array("X-Spiral-App-Role: ".APP_ROLE)); } // curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, API_URL. $addUrlPass); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); if ($method == "POST") { curl_setopt($curl, CURLOPT_POSTFIELDS , json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "PATCH") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "DELETE") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } $response = curl_exec($curl); if (curl_errno($curl)) echo curl_error($curl); curl_close($curl); return json_decode($response , true); } }
設定値に関して
共通で使用する値に関しては、定数として初めに設定します。
具体的には下記のような値を設定してください。
コードの保守性が高まりますのでAPIキーなど多くの箇所で使用するものは、環境変数設定をしておきましょう。
詳しくはサポートサイト「PHP環境変数」をご参照ください。
具体的には下記のような値を設定してください。
API_URL | リクエスト先URLの固定部分です。固定値ですので特に変更する必要はありません。 |
---|---|
API_KEY | 発行したAPIキーを設定してださい。別途権限の付与が必要になります。 |
APP_ROLE | 設定したアプリロールの識別名を入れてください。全権限の場合は値は空で大丈夫です。 |
DB_ID |
レコード操作を行うDBのIDを設定してください。 操作するDBが複数ある場合は「DB_ID_識別名」など適宜定数を追加してください。 |
APP_ID | レコード操作を行うDBがあるアプリのIDを設定してください。 |
設定値
define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", "APIキー"); define("APP_ROLE", "アプリロール識別名"); define("DB_ID", "DBID"); define("APP_ID", "アプリID");
補足
定数を設定する時に、ver.2 機能の「PHP環境変数設定」を利用することで、コードの保守性が高まりますのでAPIキーなど多くの箇所で使用するものは、環境変数設定をしておきましょう。
詳しくはサポートサイト「PHP環境変数」をご参照ください。
レコード一覧取得のサンプルコード
レコード一覧取得(【GET】apps/{app}/dbs/{db}/records )を実行したい場合には下記のサンプルコードを使用してみてください。
サンプルコード
//------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", "APIキー"); define("APP_ROLE", "アプリロール識別名"); define("DB_ID", "DBID"); define("APP_ID", "アプリID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); $resultRecordListSelect = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records"); //------------------------------ // 共通モジュール //------------------------------ class CommonBase { /** * シングルトンインスタンス * @var UserManager */ protected static $singleton; public function __construct() { if (self::$singleton) { throw new Exception('must be singleton'); } self::$singleton = $this; } /** * シングルトンインスタンスを返す * @return UserManager */ public static function getInstance() { if (!self::$singleton) { return new CommonBase(); } else { return self::$singleton; } } /** * V2用 API送信ロジック * @return Result */ function apiCurlAction($method, $addUrlPass, $data = null) { $header = array( "Authorization:Bearer ". API_KEY, "Content-Type:application/json", "X-Spiral-Api-Version: 1.1", ); if(APP_ROLE){ $header = array_merge($header,array("X-Spiral-App-Role: ".APP_ROLE)); } // curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, API_URL. $addUrlPass); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); if ($method == "POST") { curl_setopt($curl, CURLOPT_POSTFIELDS , json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "PATCH") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "DELETE") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } $response = curl_exec($curl); if (curl_errno($curl)) echo curl_error($curl); curl_close($curl); return json_decode($response , true); } }
補足
上記サンプルコードでは全件取得になっています。
「where」を指定することで特定のレコードを抽出して取得することができます。
さらに高度な抽出もできますので、詳しくはサポートサイト「条件式によるレコード検索」をご参照ください。
※APIリファレンスでは where="@フィールド識別名='値'" と記載されていますが "" で囲むとエラーになるので注意してください。(2022年7月28日時点)
「where」を指定することで特定のレコードを抽出して取得することができます。
$where = "?where=@フィールド識別名='値'"; $result_recordListSelect = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records". $where);
※APIリファレンスでは where="@フィールド識別名='値'" と記載されていますが "" で囲むとエラーになるので注意してください。(2022年7月28日時点)
レコード登録のサンプルコード
レコード登録(【POST】apps/{app}/dbs/{db}/records )を実行したい場合には下記のサンプルコードを使用してみてください。
サンプルコード
//------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", "APIキー"); define("APP_ROLE", "アプリロール識別名"); define("DB_ID", "DBID"); define("APP_ID", "アプリID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); // 登録するデータを指定 $insertData = array( "フィールド識別名" => "登録する値", "フィールド識別名" => "登録する値", "フィールド識別名" => "登録する値" ); $resultRecordInsert = $commonBase->apiCurlAction("POST", "/apps/". APP_ID. "/dbs/". DB_ID. "/records", $insertData); //------------------------------ // 共通モジュール //------------------------------ class CommonBase { /** * シングルトンインスタンス * @var UserManager */ protected static $singleton; public function __construct() { if (self::$singleton) { throw new Exception('must be singleton'); } self::$singleton = $this; } /** * シングルトンインスタンスを返す * @return UserManager */ public static function getInstance() { if (!self::$singleton) { return new CommonBase(); } else { return self::$singleton; } } /** * V2用 API送信ロジック * @return Result */ function apiCurlAction($method, $addUrlPass, $data = null) { $header = array( "Authorization:Bearer ". API_KEY, "Content-Type:application/json", "X-Spiral-Api-Version: 1.1", ); if(APP_ROLE){ $header = array_merge($header,array("X-Spiral-App-Role: ".APP_ROLE)); } // curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, API_URL. $addUrlPass); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); if ($method == "POST") { curl_setopt($curl, CURLOPT_POSTFIELDS , json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "PATCH") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "DELETE") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } $response = curl_exec($curl); if (curl_errno($curl)) echo curl_error($curl); curl_close($curl); return json_decode($response , true); } }
補足
フィールドタイプリファレンスに沿った形式でない場合は、登録時にエラーが発生してしまいます。
詳しくはサポートサイト「フィールドタイプリファレンス」をご参照ください。
また、「テキスト」「テキストエリア」以外のフィールドの値を空でリクエストすると、
400エラーが発生してしまうため、それらのフィールドが空値になる場合は、
リクエストに含めないよう気を付けてください。
詳しくはサポートサイト「フィールドタイプリファレンス」をご参照ください。
また、「テキスト」「テキストエリア」以外のフィールドの値を空でリクエストすると、
400エラーが発生してしまうため、それらのフィールドが空値になる場合は、
リクエストに含めないよう気を付けてください。
レコード取得のサンプルコード
レコード取得(【GET】apps/{app}/dbs/{db}/records/{recordId} )を実行したい場合には下記のサンプルコードを使用してみてください。
サンプルコード
//------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", "APIキー"); define("APP_ROLE", "アプリロール識別名"); define("DB_ID", "DBID"); define("APP_ID", "アプリID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); $recordId = "取得するレコードID"; $resultRecordSelect = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/". $recordId); //------------------------------ // 共通モジュール //------------------------------ class CommonBase { /** * シングルトンインスタンス * @var UserManager */ protected static $singleton; public function __construct() { if (self::$singleton) { throw new Exception('must be singleton'); } self::$singleton = $this; } /** * シングルトンインスタンスを返す * @return UserManager */ public static function getInstance() { if (!self::$singleton) { return new CommonBase(); } else { return self::$singleton; } } /** * V2用 API送信ロジック * @return Result */ function apiCurlAction($method, $addUrlPass, $data = null) { $header = array( "Authorization:Bearer ". API_KEY, "Content-Type:application/json", "X-Spiral-Api-Version: 1.1", ); if(APP_ROLE){ $header = array_merge($header,array("X-Spiral-App-Role: ".APP_ROLE)); } // curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, API_URL. $addUrlPass); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); if ($method == "POST") { curl_setopt($curl, CURLOPT_POSTFIELDS , json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "PATCH") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "DELETE") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } $response = curl_exec($curl); if (curl_errno($curl)) echo curl_error($curl); curl_close($curl); return json_decode($response , true); } }
レコード変更のサンプルコード
レコード変更(【PATCH】apps/{app}/dbs/{db}/records )を実行したい場合には下記のサンプルコードを使用してみてください。
サンプルコード
//------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", "APIキー"); define("APP_ROLE", "アプリロール識別名"); define("DB_ID", "DBID"); define("APP_ID", "アプリID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); // 更新するデータを指定 $UpdateData = array( "フィールド識別名" => "更新する値", "フィールド識別名" => "更新する値", "フィールド識別名" => "更新する値" ); $recordId = "更新するレコードID"; $resultRecordUpdate = $commonBase->apiCurlAction("PATCH", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/". $recordId, $UpdateData); //------------------------------ // 共通モジュール //------------------------------ class CommonBase { /** * シングルトンインスタンス * @var UserManager */ protected static $singleton; public function __construct() { if (self::$singleton) { throw new Exception('must be singleton'); } self::$singleton = $this; } /** * シングルトンインスタンスを返す * @return UserManager */ public static function getInstance() { if (!self::$singleton) { return new CommonBase(); } else { return self::$singleton; } } /** * V2用 API送信ロジック * @return Result */ function apiCurlAction($method, $addUrlPass, $data = null) { $header = array( "Authorization:Bearer ". API_KEY, "Content-Type:application/json", "X-Spiral-Api-Version: 1.1", ); if(APP_ROLE){ $header = array_merge($header,array("X-Spiral-App-Role: ".APP_ROLE)); } // curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, API_URL. $addUrlPass); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); if ($method == "POST") { curl_setopt($curl, CURLOPT_POSTFIELDS , json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "PATCH") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "DELETE") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } $response = curl_exec($curl); if (curl_errno($curl)) echo curl_error($curl); curl_close($curl); return json_decode($response , true); } }
レコード削除のサンプルコード
レコード削除(【DELETE】apps/{app}/dbs/{db}/records )を実行したい場合には下記のサンプルコードを使用してみてください。
サンプルコード
//------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", "APIキー"); define("APP_ROLE", "アプリロール識別名"); define("DB_ID", "DBID"); define("APP_ID", "アプリID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); $recordId = "削除するレコードID"; $resultRecordDelete = $commonBase->apiCurlAction("DELETE", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/". $recordId); //------------------------------ // 共通モジュール //------------------------------ class CommonBase { /** * シングルトンインスタンス * @var UserManager */ protected static $singleton; public function __construct() { if (self::$singleton) { throw new Exception('must be singleton'); } self::$singleton = $this; } /** * シングルトンインスタンスを返す * @return UserManager */ public static function getInstance() { if (!self::$singleton) { return new CommonBase(); } else { return self::$singleton; } } /** * V2用 API送信ロジック * @return Result */ function apiCurlAction($method, $addUrlPass, $data = null) { $header = array( "Authorization:Bearer ". API_KEY, "Content-Type:application/json", "X-Spiral-Api-Version: 1.1", ); if(APP_ROLE){ $header = array_merge($header,array("X-Spiral-App-Role: ".APP_ROLE)); } // curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, API_URL. $addUrlPass); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); if ($method == "POST") { curl_setopt($curl, CURLOPT_POSTFIELDS , json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "PATCH") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "DELETE") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } $response = curl_exec($curl); if (curl_errno($curl)) echo curl_error($curl); curl_close($curl); return json_decode($response , true); } }
レコード検証のサンプルコード
レコード検証(【POST】apps/{app}/dbs/{db}/records/verify )を実行したい場合には下記のサンプルコードを使用してみてください。
サンプルコード
//------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", "APIキー"); define("APP_ROLE", "アプリロール識別名"); define("DB_ID", "DBID"); define("APP_ID", "アプリID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); // 検証したいレコードのIDとパスワード指定 $verifyData = array( "idField" => array("フィールド識別名" => "登録されている値"), "passwordField" => array("フィールド識別名" => "登録されている値") ); $resultRecordVerify = $commonBase->apiCurlAction("POST", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/verify", $verifyData); //------------------------------ // 共通モジュール //------------------------------ class CommonBase { /** * シングルトンインスタンス * @var UserManager */ protected static $singleton; public function __construct() { if (self::$singleton) { throw new Exception('must be singleton'); } self::$singleton = $this; } /** * シングルトンインスタンスを返す * @return UserManager */ public static function getInstance() { if (!self::$singleton) { return new CommonBase(); } else { return self::$singleton; } } /** * V2用 API送信ロジック * @return Result */ function apiCurlAction($method, $addUrlPass, $data = null) { $header = array( "Authorization:Bearer ". API_KEY, "Content-Type:application/json", "X-Spiral-Api-Version: 1.1", ); if(APP_ROLE){ $header = array_merge($header,array("X-Spiral-App-Role: ".APP_ROLE)); } // curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, API_URL. $addUrlPass); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); if ($method == "POST") { curl_setopt($curl, CURLOPT_POSTFIELDS , json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "PATCH") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "DELETE") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } $response = curl_exec($curl); if (curl_errno($curl)) echo curl_error($curl); curl_close($curl); return json_decode($response , true); } }
複数レコード登録のサンプルコード
複数レコード登録(【POST】apps/{app}/dbs/{db}/records/bulk )を実行したい場合には下記のサンプルコードを使用してみてください。
サンプルコード
//------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", "APIキー"); define("APP_ROLE", "アプリロール識別名"); define("DB_ID", "DBID"); define("APP_ID", "アプリID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); // 登録するデータを複数指定可能 $bulkInsertData = array("records" => array( array( "フィールド識別名" => "登録する値", "フィールド識別名" => "登録する値", "フィールド識別名" => "登録する値" ), array( "フィールド識別名" => "登録する値", "フィールド識別名" => "登録する値", "フィールド識別名" => "登録する値" ) )); $resultRecordListInsert = $commonBase->apiCurlAction("POST", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/bulk", $bulkInsertData); //------------------------------ // 共通モジュール //------------------------------ class CommonBase { /** * シングルトンインスタンス * @var UserManager */ protected static $singleton; public function __construct() { if (self::$singleton) { throw new Exception('must be singleton'); } self::$singleton = $this; } /** * シングルトンインスタンスを返す * @return UserManager */ public static function getInstance() { if (!self::$singleton) { return new CommonBase(); } else { return self::$singleton; } } /** * V2用 API送信ロジック * @return Result */ function apiCurlAction($method, $addUrlPass, $data = null) { $header = array( "Authorization:Bearer ". API_KEY, "Content-Type:application/json", "X-Spiral-Api-Version: 1.1", ); if(APP_ROLE){ $header = array_merge($header,array("X-Spiral-App-Role: ".APP_ROLE)); } // curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, API_URL. $addUrlPass); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); if ($method == "POST") { curl_setopt($curl, CURLOPT_POSTFIELDS , json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "PATCH") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "DELETE") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } $response = curl_exec($curl); if (curl_errno($curl)) echo curl_error($curl); curl_close($curl); return json_decode($response , true); } }
複数レコード更新のサンプルコード
複数レコード更新(【PATCH】apps/{app}/dbs/{db}/records/bulk )を実行したい場合には下記のサンプルコードを使用してみてください。
サンプルコード
//------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", "APIキー"); define("APP_ROLE", "アプリロール識別名"); define("DB_ID", "DBID"); define("APP_ID", "アプリID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); // 更新するデータを複数指定可能 $bulkUpdateData = array( "records" => array( array( "_id" => "レコードID", "フィールド識別名" => "更新する値", "フィールド識別名" => "更新する値", "フィールド識別名" => "更新する値" ), array( "_id" => "レコードID", "フィールド識別名" => "更新する値", "フィールド識別名" => "更新する値", "フィールド識別名" => "更新する値" ) )); $resultRecordListUpdate = $commonBase->apiCurlAction("PATCH", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/bulk", $bulkUpdateData); //------------------------------ // 共通モジュール //------------------------------ class CommonBase { /** * シングルトンインスタンス * @var UserManager */ protected static $singleton; public function __construct() { if (self::$singleton) { throw new Exception('must be singleton'); } self::$singleton = $this; } /** * シングルトンインスタンスを返す * @return UserManager */ public static function getInstance() { if (!self::$singleton) { return new CommonBase(); } else { return self::$singleton; } } /** * V2用 API送信ロジック * @return Result */ function apiCurlAction($method, $addUrlPass, $data = null) { $header = array( "Authorization:Bearer ". API_KEY, "Content-Type:application/json", "X-Spiral-Api-Version: 1.1", ); if(APP_ROLE){ $header = array_merge($header,array("X-Spiral-App-Role: ".APP_ROLE)); } // curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, API_URL. $addUrlPass); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); if ($method == "POST") { curl_setopt($curl, CURLOPT_POSTFIELDS , json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "PATCH") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "DELETE") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } $response = curl_exec($curl); if (curl_errno($curl)) echo curl_error($curl); curl_close($curl); return json_decode($response , true); } }
補足
更新キーの指定方法は「_id」でレコードIDを指定するか、
「_updataKey」で入力必須かつ重複不可のフィールドを指定するかの2通りの指定方法があります。
要件に合わせて使い分けてください。
「_updataKey」で入力必須かつ重複不可のフィールドを指定するかの2通りの指定方法があります。
要件に合わせて使い分けてください。
複数レコード削除のサンプルコード
複数レコード削除(【DELETE】apps/{app}/dbs/{db}/records/bulk )を実行したい場合には下記のサンプルコードを使用してみてください。
サンプルコード
//------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", "APIキー"); define("APP_ROLE", "アプリロール識別名"); define("DB_ID", "DBID"); define("APP_ID", "アプリID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); // 削除するレコードIDを複数指定可能 $bulkDeleteData = array( "ids" => array("レコードID", "レコードID", "レコードID") ); $resultRecordListDelete = $commonBase->apiCurlAction("DELETE", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/bulk", $bulkDeleteData); //------------------------------ // 共通モジュール //------------------------------ class CommonBase { /** * シングルトンインスタンス * @var UserManager */ protected static $singleton; public function __construct() { if (self::$singleton) { throw new Exception('must be singleton'); } self::$singleton = $this; } /** * シングルトンインスタンスを返す * @return UserManager */ public static function getInstance() { if (!self::$singleton) { return new CommonBase(); } else { return self::$singleton; } } /** * V2用 API送信ロジック * @return Result */ function apiCurlAction($method, $addUrlPass, $data = null) { $header = array( "Authorization:Bearer ". API_KEY, "Content-Type:application/json", "X-Spiral-Api-Version: 1.1", ); if(APP_ROLE){ $header = array_merge($header,array("X-Spiral-App-Role: ".APP_ROLE)); } // curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, API_URL. $addUrlPass); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); if ($method == "POST") { curl_setopt($curl, CURLOPT_POSTFIELDS , json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "PATCH") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "DELETE") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } $response = curl_exec($curl); if (curl_errno($curl)) echo curl_error($curl); curl_close($curl); return json_decode($response , true); } }
ver.2 でPHPの実行結果を確認する方法
ver.2 では echo などの関数が使えないため、実行結果を確認するためには Thymeleaf を使用する必要があります。
はじめは分かりにくい部分ではありますので、初歩的な確認方法を以下で解説いたします。
1)ソース設定でフリーコンテンツブロックを作成して以下の Thymeleaf を記載してください。
2)作成したブロックをページに追加してください。
3)ページの「PHP」タブにコードを記載し、コード内で実行結果を Thymeleaf に渡す記載をしてください。
上記ページを作成することで、ページURLを開くと実行結果を確認することができます。
ver.2 でPHPのデバッグをしたい場合などに活用してみてください。
はじめは分かりにくい部分ではありますので、初歩的な確認方法を以下で解説いたします。
1)ソース設定でフリーコンテンツブロックを作成して以下の Thymeleaf を記載してください。
<div> <div th:if="${cp.result.isSuccess}"> <div th:text="${cp.result.value['API_RESPONSE']}"></div> </div> <div th:if="${!cp.result.isSuccess}"> <div th:text="${cp.result.errorMessage}"></div> </div> </div>
3)ページの「PHP」タブにコードを記載し、コード内で実行結果を Thymeleaf に渡す記載をしてください。
例:レコード登録のAPIレスポンスを確認したい場合
//------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); // 登録するデータを指定 $insertData = array( "フィールド識別名" => "登録する値", "フィールド識別名" => "登録する値", "フィールド識別名" => "登録する値" ); $resultRecordInsert = $commonBase->apiCurlAction("POST", "/apps/". APP_ID. "/dbs/". DB_ID. "/records", $insertData); // レスポンスを Thymeleaf に受け渡す $SPIRAL->setTHValue("API_RESPONSE", $resultRecordInsert);
ver.2 でPHPのデバッグをしたい場合などに活用してみてください。