SPIRALは、主にエンタープライズ向けのローコードプラットフォームになります。ローコードプラットフォームなので、プログラミング知識がなくともWebアプリケーションを開発できるのが魅力です。
SPIRALでは、自社のシステムや外部システムと連携する場合を想定して、APIが公開されています。今回は、そのAPIを利用して、データベースのCRUD操作を行う流れを紹介します。
注意点
SPIRALでは、SPIRAL内部で動作するアカウント内APIと、外部APIの2種類があります。アカウント内APIでは、簡単に操作できるPHP SDKがありますが、外部公開はされていません。そのため、今回はPHPの file_get_contents
などを使ってAPI操作をしています。
アカウント内API SPIRAL ver.1 サポートサイト
準備
APIトークンの取得
SPIRALの管理画面で、APIトークンを作成します。ダッシュボードの開発メニュー内のAPIトークンにて、新しいAPIトークンを作成します。
作成後に入手できるAPIトークンと、APIトークンシークレットをメモしておきます。
データベースの作成
今回作成したのは通常DBになります。SPIRALでは、この他8種類のデータベースが利用できます。
データベースの名前は DemoDB
としました。また、フィールドは以下の通りです。
フィールド名 | 差し替えキーワード | 型 |
---|---|---|
項目名 | name | テキストフィールド(32 vtes) |
数値 | number | 正数 |
登録日時 | registerAt | 登録日時 |
コードについて
今回はPHPで作成しています。
APIトークンの保存
APIトークンとシークレットは、環境変数に保存します。以下のように .env
ファイルを作成し、トークンを保存します。
API_TOKEN=your_api_token
API_TOKEN_SECRET=your_api_token_secret
.env の読み込みは vlucas/phpdotenv
を使っています。インストールは composer
で行います。
composer require vlucas/phpdotenv
次に、PHPのコード内で .env
を読み込みます。
require_once __DIR__ . "/vendor/autoload.php";
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
APIリクエストURLの取得
APIでリクエストするURLは、以下の手順で取得します。
// ロケータのURL (変更の必要はありません)
$locator = "https://www.pi-pe.co.jp/api/locator";
// スパイラルの操作画面で発行したトークンを設定します。
$TOKEN = $_ENV['API_TOKEN'];
$SECRET = $_ENV['API_TOKEN_SECRET'];
// 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'];
この時のレスポンスは以下のようになっています。詳細はSPIRAL ver.1 API リファレンスにて確認してください。
{
"code": 0,
"message": "OK",
"location": "https://(APIサーバ)/api/service",
"default_version": 2,
"supported_version": [1, 2],
"use_client_crt": "f"
}
location
に、APIサーバのURLが入っています。
データベースへの新規登録
まず、データベースへの新規登録を行う流れです。最初にパラメータを作成します。データベース名、フィールド名は作成したものに合わせて修正してください。
// リクエストデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
$parameters["db_title"] = "DemoDB"; //DBのタイトル
$parameters["passkey"] = time(); //エポック秒
// 登録したいデータを設定します(1件分)
$parameters["data"] = array(
array("name" => "name", "value" => "名前の値"),
array("name" => "number", "value" => "1000"),
array("name" => "registerAt", "value" => "now"),
);
// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$parameters["signature"] = hash_hmac('sha1', $key, $SECRET, false);
// JSON形式にエンコードします
$json = json_encode($parameters);
そして、リクエストを行います。
// 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));
レスポンスは以下のようになります。
{
"code": 0,
"message": "OK",
"id": 1
}
id
に登録したデータのIDが入っています。
データベースのデータ取得
次に、登録したデータを取得する流れです。まずはパラメータを作成します。 search_condition
にて検索条件を指定し、 select_columns
には取得したいフィールド名を指定します。
// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
$parameters["db_title"] = "DemoDB"; //DBのタイトル
$parameters["passkey"] = time(); //エポック秒
// 検索条件
$parameters["search_condition"] = array(
array("name" => "id", "value" => "2", "operator" => "="),
);
$parameters["select_columns"] = array(
"id",
"name",
"number",
"registerAt",
);
// 署名を付けます
$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));
レスポンスとして得られるJSONは以下のようになっています。
{
"code": "0",
"data": [
[
"2",
"名前の値",
"1000",
"2025年4月10日 11時30分50秒"
]
],
"count": "1",
"header": [
"id",
"項目名",
"数値",
"登録日時"
],
"label": [
{},
{},
{}
],
"message": "OK"
}
データベースの更新
データベースの更新は、前述の選択条件に対して、データの更新情報を適用します。 data
キーで、実際に更新する値とフィールドを指定します。
// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
$parameters["db_title"] = "DemoDB"; //DBのタイトル
$parameters["passkey"] = time(); //エポック秒
// 検索条件
$parameters["search_condition"] = array(
array("name" => "id", "value" => "1", "operator" => "="),
);
// 更新データ
$parameters["data"] = array(
array("name" => "name", "value" => "更新した値"),
array("name" => "number", "value" => "2000"),
);
// 署名を付けます
$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));
レスポンスは以下のようなJSONです。
{
"code": 0,
"message": "OK",
"count": 1
}
データベースの削除
データベースの削除は、選択条件を指定して、その条件にマッチするデータを削除します。
// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
$parameters["db_title"] = "DemoDB"; //DBのタイトル
$parameters["passkey"] = time(); //エポック秒
// 検索条件
$parameters["search_condition"] = array(
array("name" => "id", "value" => "1", "operator" => "="),
);
// 署名を付けます
$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));
レスポンスは更新時と同じです。
{
"code": 0,
"message": "OK",
"count": 1
}
まとめ
今回はSPIRALのAPIを利用して、データベースのCRUD操作を行う流れを紹介しました。SPIRALを使って、社内システムや外部システムと連携する際の参考にしてください。
なお、1分あたりのAPIのリクエスト数は、契約によって上限があります。ご注意ください(詳細はAPIのリクエスト数制限を知りたい SPIRAL ver.1 サポートサイトにて)。