この記事では Record (batch) のメソッドごとに、サンプルコードをまとめています。
SPIRAL ver.2 でAPIを使用する時の参考になれば幸いです。
SPIRAL ver.2 でAPIを使用する時の参考になれば幸いです。
- APIメソッドごとのサンプルコードまとめ Record (batch)
- APIメソッドごとの権限設定方法まとめ Record (batch)
- APIメソッドごとの権限設定&サンプルコード 記事一覧
はじめに
この記事で紹介するサンプルコードでは、共通の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, $multiPart = null, $jsonDecode = null) {
$header = array(
"Authorization:Bearer ". API_KEY,
"X-Spiral-Api-Version: 1.1",
);
if($multiPart) {
$header = array_merge($header, array($multiPart));
} else {
$header = array_merge($header, array("Content-Type:application/json"));
}
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") {
if ($multiPart) {
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
} else {
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);
if($jsonDecode){
return $response;
}else{
return json_decode($response, true);
}
}
}
設定値に関して
共通で使用する値に関しては、定数として初めに設定します。
具体的には下記のような値を設定してください。
上記はAPIキーの記述を「PHP環境変数設定」を利用した場合のコードとなります。
このように定数を設定する時に、ver.2 機能の「PHP環境変数設定」を利用することで、
本番環境とテスト環境でキーが異なっていても、コードを書き換える必要がなく、保守性が高まります。
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", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
補足
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
このように定数を設定する時に、ver.2 機能の「PHP環境変数設定」を利用することで、
本番環境とテスト環境でキーが異なっていても、コードを書き換える必要がなく、保守性が高まります。
APIキーなど複数ページで使用するものは、環境変数設定をしておきましょう。
その他詳しくはサポートサイト「PHP環境変数」をご参照ください。
レコード一括登録依頼一覧取得メソッド
レコード一括登録依頼一覧取得を実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$resultBatch = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchInserts");
//------------------------------
// 共通モジュール
//------------------------------
// ※こちらに「共通モジュール」を必ず記載してください。
?>
レコード一括登録依頼作成メソッド
レコード一括登録依頼作成を実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$fileName = "ファイル名";
$fileData = "ファイルデータ";
// リクエストボディ(マルチパート形式)
$requestBody = "--WebKitFormBoundary7MA4YWxkTrZu0gW\r\n";
$requestBody .= "Content-Disposition: form-data; name=\"file\"; filename=\"". $fileName. "\"\r\n";
$requestBody .= "Content-Type: text/plain\r\n\r\n";
$requestBody .= $fileData. "\r\n";
$requestBody .= "--WebKitFormBoundary7MA4YWxkTrZu0gW\r\n";
$requestBody .= "Content-Disposition: form-data; name=\"onError\"\r\n\r\n";
$requestBody .= "rollback\r\n"; // rollback or ignore
$requestBody .= "--WebKitFormBoundary7MA4YWxkTrZu0gW--";
$contentType = "Content-Type: multipart/form-data; boundary=WebKitFormBoundary7MA4YWxkTrZu0gW";
$resultBatch = $commonBase->apiCurlAction("POST", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchInserts", $requestBody, $contentType);
//------------------------------
// 共通モジュール
//------------------------------
// ※こちらに「共通モジュール」を必ず記載してください。
?>
補足
batch処理するファイルの具体的な記載方法は、記事内の「ファイルの記載方法」をご確認ください。
リクエストボディの上記箇所では、登録時にエラーが発生した際の処理について設定できます。
"rollback" を指定するとエラーレコードが1件でもあれば、全てのレコードの登録処理をしません。
"ignore" を指定するとエラーレコードをスキップし、登録できるレコードのみ登録します。
$requestBody .= "Content-Disposition: form-data; name=\"onError\"\r\n\r\n"; $requestBody .= "rollback\r\n"; // rollback or ignore
"rollback" を指定するとエラーレコードが1件でもあれば、全てのレコードの登録処理をしません。
"ignore" を指定するとエラーレコードをスキップし、登録できるレコードのみ登録します。
レコード一括登録依頼取得メソッド
レコード一括登録依頼取得を実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$batchInsertId = "一括登録依頼ID";
$resultBatch = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchInserts/". $batchInsertId);
//------------------------------
// 共通モジュール
//------------------------------
// ※こちらに「共通モジュール」を必ず記載してください。
?>
レコード一括登録依頼キャンセルメソッド
レコード一括登録依頼キャンセルを実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$batchInsertId = "一括登録依頼ID";
$resultBatch = $commonBase->apiCurlAction("POST", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchInserts/". $batchInsertId. "/cancel");
//------------------------------
// 共通モジュール
//------------------------------
// ※こちらに「共通モジュール」を必ず記載してください。
?>
レコード一括更新依頼一覧取得メソッド
レコード一括更新依頼一覧を取得を実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$resultBatch = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchUpdates");
//------------------------------
// 共通モジュール
//------------------------------
// ※こちらに「共通モジュール」を必ず記載してください。
?>
レコード一括更新依頼作成メソッド
レコード一括更新依頼作成を実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$fileName = "ファイル名";
$fileData = "ファイルデータ";
// リクエストボディ(マルチパート形式)
$requestBody = "--WebKitFormBoundary7MA4YWxkTrZu0gW\r\n";
$requestBody .= "Content-Disposition: form-data; name=\"file\"; filename=\"". $fileName. "\"\r\n";
$requestBody .= "Content-Type: text/plain\r\n\r\n";
$requestBody .= $fileData. "\r\n";
$requestBody .= "--WebKitFormBoundary7MA4YWxkTrZu0gW\r\n";
$requestBody .= "Content-Disposition: form-data; name=\"upsert\"\r\n\r\n";
$requestBody .= "false\r\n"; // true or false
$requestBody .= "--WebKitFormBoundary7MA4YWxkTrZu0gW\r\n";
$requestBody .= "Content-Disposition: form-data; name=\"updateKeyField\"\r\n\r\n";
$requestBody .= "_id\r\n"; // 更新キー
$requestBody .= "--WebKitFormBoundary7MA4YWxkTrZu0gW\r\n";
$requestBody .= "Content-Disposition: form-data; name=\"onError\"\r\n\r\n";
$requestBody .= "rollback\r\n"; // rollback or ignore
$requestBody .= "--WebKitFormBoundary7MA4YWxkTrZu0gW--";
$contentType = "Content-Type: multipart/form-data; boundary=WebKitFormBoundary7MA4YWxkTrZu0gW";
$resultBatch = $commonBase->apiCurlAction("POST", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchUpdates", $requestBody, $contentType);
//------------------------------
// 共通モジュール
//------------------------------
// ※こちらに「共通モジュール」を必ず記載してください。
?>
補足
batch処理するファイルの具体的な記載方法は、記事内の「ファイルの記載方法」をご確認ください。
リクエストボディの上記箇所では、一括登録更新を行うか行わないかを設定できます。
"true" を指定すると、DBのレコードに存在するデータを更新し、存在しないデータは新規登録します。
"false" を指定すると、レコード更新のみで新規登録はしません。
リクエストボディの上記箇所では、更新キーを設定できます。デフォルトはレコードIDとなっています。
レコードID以外では、入力必須かつ重複不可のテキスト型またはメールアドレス型のフィールドを指定可能です。
ユニークフィールドを指定する場合は "_id" 部分を該当のフィールド識別名に書き換えてください。
また、これら以外を更新キーとして指定するとエラーとなりますのでご注意ください。
リクエストボディの上記箇所では、更新時にエラーが発生した際の処理について設定できます。
"rollback" を指定するとエラーレコードが1件でもあれば、全てのレコードの更新処理をしません。
"ignore" を指定するとエラーレコードをスキップし、更新できるレコードのみ更新します。
$requestBody .= "Content-Disposition: form-data; name=\"upsert\"\r\n\r\n"; $requestBody .= "false\r\n"; // true or false
"true" を指定すると、DBのレコードに存在するデータを更新し、存在しないデータは新規登録します。
"false" を指定すると、レコード更新のみで新規登録はしません。
$requestBody .= "Content-Disposition: form-data; name=\"updateKeyField\"\r\n\r\n"; $requestBody .= "_id\r\n"; // 更新キー
レコードID以外では、入力必須かつ重複不可のテキスト型またはメールアドレス型のフィールドを指定可能です。
ユニークフィールドを指定する場合は "_id" 部分を該当のフィールド識別名に書き換えてください。
また、これら以外を更新キーとして指定するとエラーとなりますのでご注意ください。
$requestBody .= "Content-Disposition: form-data; name=\"onError\"\r\n\r\n"; $requestBody .= "rollback\r\n"; // rollback or ignore
"rollback" を指定するとエラーレコードが1件でもあれば、全てのレコードの更新処理をしません。
"ignore" を指定するとエラーレコードをスキップし、更新できるレコードのみ更新します。
レコード一括更新依頼取得メソッド
レコード一括更新依頼取得を実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$batchUpdateId = "一括更新依頼ID";
$resultBatch = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchUpdates/". $batchUpdateId);
//------------------------------
// 共通モジュール
//------------------------------
// ※こちらに「共通モジュール」を必ず記載してください。
?>
レコード一括更新依頼キャンセルメソッド
レコード一括更新依頼キャンセルを実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$batchUpdateId = "一括更新依頼ID";
$resultBatch = $commonBase->apiCurlAction("POST", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchUpdates/". $batchUpdateId. "/cancel");
//------------------------------
// 共通モジュール
//------------------------------
// ※こちらに「共通モジュール」を必ず記載してください。
?>
レコード一括削除依頼一覧取得メソッド
レコード一括削除依頼一覧取得を実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$resultBatch = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchDeletes");
//------------------------------
// 共通モジュール
//------------------------------
// ※こちらに「共通モジュール」を必ず記載してください。
?>
レコード一括削除依頼作成メソッド
レコード一括削除依頼作成を実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$requestBody = array(
"where" => "削除するレコードの抽出条件を記載"
);
$resultBatch = $commonBase->apiCurlAction("POST", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchDeletes", $requestBody);
//------------------------------
// 共通モジュール
//------------------------------
// ※こちらに「共通モジュール」を必ず記載してください。
?>
補足
削除するレコードの抽出条件を省略すると、全件削除になってしまいます。
全件削除したくない場合は必ず抽出条件を記載するようにしてください。
全件削除したくない場合は必ず抽出条件を記載するようにしてください。
レコード一括削除依頼取得メソッド
レコード一括削除依頼取得を実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$batchDeleteId = "一括削除依頼ID";
$resultBatch = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchDeletes/". $batchDeleteId);
//------------------------------
// 共通モジュール
//------------------------------
// ※こちらに「共通モジュール」を必ず記載してください。
?>
レコード一括削除依頼キャンセルメソッド
レコード一括削除依頼キャンセルを実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php
//------------------------------
// 設定値
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1");
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
define("APP_ROLE", "アプリロール識別名");
define("DB_ID", "DBID");
define("APP_ID", "アプリID");
//------------------------------
// API実行
//------------------------------
$commonBase = CommonBase::getInstance();
$batchDeleteId = "一括削除依頼ID";
$resultBatch = $commonBase->apiCurlAction("POST", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchDeletes/". $batchDeleteId. "/cancel");
//------------------------------
// 共通モジュール
//------------------------------
// ※こちらに「共通モジュール」を必ず記載してください。
?>
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実行
//------------------------------
$commonBase = CommonBase::getInstance();
$resultBatch = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records/batchInserts");
// レスポンスを Thymeleaf に受け渡す
$SPIRAL->setTHValue("API_RESPONSE", $resultBatch);
ver.2 でPHPのデバッグをしたい場合などに活用してみてください。
ファイルの記載方法
batch処理するファイルは以下のように記載することができます。
なお、ver.2 の PHP ではファイル関数を使用できませんのでご注意ください。
ファイル型フィールドはbatch処理の対象外の為、ヘッダ行にファイル型フィールドの識別名を含めるとエラーとなります。
1.ファイル関数でファイルを読み込む
読み込むファイルは、拡張子がtsvあるいはcsvのもののみです。$fileData = file_get_contents('ファイル');
2.文字列で直接データを記載
タブもしくはカンマ区切りで直接データを記載することができます。$fileData = "text,textarea,mail,number,phone\r\n"; // ファイルヘッダー 登録したいフィールド識別名を記載 $fileData .= "テキスト,テキストエリア,test@spiral-platform.co.jp,100,0312345678"; // データ行 改行して登録データを記載
ファイル型フィールドはbatch処理の対象外の為、ヘッダ行にファイル型フィールドの識別名を含めるとエラーとなります。