RESTful APIのご紹介
アルファサード株式会社
フロントエンドエンジニア 藤本 裕考
PowerCMS Xの RESTful API ⽤のエンドポイントに対して
クライアント等のシステムからリクエストを送信することで
PowerCMS X に登録された情報を取得・変更・登録・検索する事が可能と
なります。
クライアント(ブラウザ等) PowerCMS X
リクエスト
レスポンス(JSON)
RESTful API の概要
準備
1. エンドポイントのアクセス設定
2. CMS管理画⾯で「有効化」の設定
■エンドポイントのパス
https://example.com/powercmsx/api/
■認証(authentication)エンドポイント
https://example.com/powercmsx/api/バージョン/authentication
■それ以外のエンドポイント
https://example.com/powercmsx/api/バージョン/スコープID/モデル名/メソッド/オ
ブジェクトID(オプション)?キー1=値1&キー2=値2...
PowerCMS X での利用方法
エンドポイントから返却される登録情報のオブジェクトJSONの形式
{
"id" : "オブジェクトID",
"カラム名1" : "カラム1の値",
"カラム名2" : "カラム2の値"
}
返却される値
リレーションを含むオブジェクトJSONの形式
{
"id" : "オブジェクトID",
"カラム名1" : "カラム1の値",
"数値型単⼀リレーションカラム" : {
"id" : "オブジェクトID",
"カラム名1" : "カラム1の値",
"カラム名2" : "カラム2の値"
},
"複数リレーション型カラム" : [
{
"id" : "オブジェクトID",
"カラム名1" : "カラム1の値",
"カラム名2" : "カラム2の値"
},
{
"id" : "オブジェクトID",
"カラム名1" : "カラム1の値",
"カラム名2" : "カラム2の値"
}
]
}
返却される値
エンドポイントのメソッドには以下の種類があります。
エンドポイントの種類
エンドポイント名 機能
authentication 認証⽤
scheme モデルのスキーマを取得
get 単⼀オブジェクトを返却
list オブジェクトの⼀覧を返却
insert オブジェクトの新規作成
update オブジェクトの更新
delete オブジェクトの削除
token フォームの⼀時トークンを返却 ※1
confirm フォームのバリデーション結果を返却 ※1
submit フォームの投稿 ※1
search 全⽂検索の結果を返却 ※2
※1 モデル「contact」に対してのみ有効
※2 プラグイン「SearchEstraier」が有効な場合のみ有効
RESTful API JavaScript SDK のご紹介
PowerCMS Xの RESTful API を使⽤するにあたって
JavaScript SDKを公開しています。
RESTful API JavaScript SDK
• アプリや他のサービスとのスムーズな連携
• Jamstack によるコンテンツの配信
• 検索やフォームなどの動的コンテンツの提供
• etc…
GitHub https://github.com/alfasado/pt-restful-api-client
ワークスペースID1の記事⼀覧を取得する場合
RESTful API JavaScript SDK 記述例1
const client = new PTRESTfulAPIClient('/powercmsx/api', 1); // 引数: APIパス、バージョン
const params = {
sort_by: 'published_on',
sort_order: 'desc'
};
const response = await client.listObjects('entry', 1, params); // 引数: モデル名, ワークスペースID,
パラメーター
const json = await response.json();
// json.itemsにモデルのオブジェクト⼀覧が格納されている
※ await を使用しているので非同期関数の中で使用します。
async function getList() {
const response = await client.listObjects('entry', 1);
const json = await response.json();
}
ワークスペースID1・entryモデルにあるIDが2の記事を取得する場合
RESTful API JavaScript SDK 記述例2
const response = await client.getObject('entry', 2, 1); // 引数: モデル名, オブジェクトのID, ワークスペ
ースID
const entry = await response.json();
// entryに記事オブジェクトが格納されている
ワークスペースID1のentryモデルに新規記事を登録する場合
RESTful API JavaScript SDK 記述例3
const client = new PTRESTfulAPIClient('/powercmsx/api', 1);
// 認証
const name = 'username';
const password = 'password';
const authResponse = await client.authentication(name, password);
const authData = await authResponse.json();
const token = authData.access_token;
// 投稿する情報
const data = {
title: 'Hello World!',
text: '本⽂を⼊⼒します。',
basename: 'hello_world',
status: 4,
};
const response = await client.createObject('entry', 1, token, data); // 引数: モデル名, ワークスペースID, トークン,
リクエストボディ
メソッド⼀覧
RESTful API JavaScript SDK で利用可能なメソッド
メソッド名( client.method ) 機能
authentication ユーザー認証を実⾏します
getScheme スキーマの取得を⾏います
createObject オブジェクトを作成します
listObjects オブジェクト⼀覧を取得します
getObject オブジェクトを取得します
updateObject オブジェクトを更新します
deleteObject オブジェクトを削除します
getContactToken コンタクト(フォーム)のトークンを取得します
confirmContact コンタクト(フォーム)データのバリデーションを実⾏します
submitContact コンタクト(フォーム)データを送信します
searchObjects 全⽂検索(SearchEstraierプラグイン)を実⾏します
runFetch Fetch APIの呼び出しを⾏います。任意のエンドポイント(プラグイン
で拡張したエンドポイントなど)に対してリソース取得が可能なメソッ
ドです。引数に応じて適切なリクエストを発⾏します。
RESTful API のドキュメント
RESTful API ドキュメント
https://powercmsx.jp/about/restful_api.html
RESTful API JavaScript SDK
https://github.com/alfasado/pt-restful-api-client
RESTful API のドキュメント
本⽇はありがとうございました

「Restful API」