バッチAPIの使用
オブジェクトを公開すると、Liferayは自動的にそのためのREST APIを生成します。 これには、POST、PUT、DELETEの一括操作のためのバッチAPIが含まれます。 ここでは、cURLコマンドを使用して、カスタムオブジェクトのこれらのバッチAPIを呼び出します。
バッチAPIは、サイトスコープのオブジェクトではなく、会社スコープのオブジェクトに対してのみ生成されます。
先に進む前に、新しい Liferay DXP/Portal 7.4インスタンスをセットアップし、提供されたチュートリアルコードを準備します。
サイトオブジェクトと会社オブジェクトの両方用に生成された API の完全なリストについては、 オブジェクトのヘッドレスフレームワーク統合 を参照してください。 Liferay API Explorer を介してカスタムオブジェクト API を表示およびテストできます。 [server]:[port]/o/api (例: localhost:8080/o/api)。 これらは REST アプリケーション の下に表示されます。
Liferayインスタンスの設定
新しいLiferay インスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.132-ga132
http://localhost:8080 で Liferay にサインインしてください。 メールアドレス test@liferay.com とパスワード test を使用してください。 プロンプトが表示されたら、パスワードを learn に変更してください。
次に、以下の手順に従って、このチュートリアル用の基本オブジェクトを作成します:
-
グローバルメニュー (
) を開き、 コントロールパネル → オブジェクト に移動します。 -
追加 ボタン (
) をクリックし、以下の値を入力してください。分野 価値 ラベル できる複数形ラベル エイブルズ名前 できる -
新しい オブジェクト ドラフトを選択し、 フィールド タブに移動して、単一のテキスト フィールド を追加します。
ラベル フィールド名 タイプ 必須 名前 名前 文章 ✔ -
詳細 タブに移動し、 公開 をクリックします。
重要このチュートリアルでは、上記の値を使用する必要があります。
オブジェクトの公開 は、データの受信と保存のための新しいアプリケーションを作成してアクティブ化します。 ヘッドレスAPI経由でアクセスできるようになりました。
サンプルコードの準備
以下のコマンドを実行して、提供されているサンプルコードをダウンロードして解凍してください。
curl https://resources.learn.liferay.com/examples/liferay-t4r3.zip -O
unzip liferay-t4r3.zip
これらのスクリプトには、以下のバッチAPIが含まれています。
| HTTP メソッド | HTTPエンドポイント | 説明 |
|---|---|---|
| DELETE | /batch | 複数のオブジェクトエントリーを削除します |
| POST | /batch | API呼び出しで提供された詳細を使用して複数のオブジェクトエントリーを作成します |
| PUT | /batch | API呼び出しで提供された詳細を使用して、複数のオブジェクトエントリーを置き換えます |
GETメソッドは、デモンストレーション目的で含まれています。 これは、Liferayインスタンス内のオブジェクトエントリの完全なリストを返します。
カスタムオブジェクトのAPIを呼び出す
-
サンプルコードをダウンロードしたら、
liferay-t4r3フォルダーに移動します。プロジェクト内のcurlcd liferay-t4r3/curl -
Ables_POST_Batchを実行します。 これにより、複数のオブジェクトエントリが作成されます。./Ables_POST_Batch.sh端末には同様の出力が表示されます。
{ "className" : "com.liferay.object.rest.dto.v1_0.ObjectEntry", "contentType" : "JSON", "errorMessage" : ""、 "executeStatus" : "INITIAL"、 "externalReferenceCode" : ""、 "failedItems" : [ ]、 "id" : 4、 "importStrategy" : "ON_ERROR_FAIL"、 "操作" : "作成"、 "処理済みアイテム数" : 0、 "開始時刻" : "2022-04-07T22:51:37Z"、 "totalItemsCount" : 0 } -
Ables_GET_FromCompanyを実行して、エントリが作成されたことを確認します。 これは、すべてのオブジェクトエントリのリストを返します。./Ables_GET_FromCompany.sh各エントリのIDをコピーして、以下のPUTおよびDELETEメソッドで使用してください。
{ ... "アイテム" : [ { ... "id" : 41985、 ... "名前" : "エイブル 1" }, { ... "id" : 41987、 ... "名前" : "エイブル 2" }, { ... "id" : 41989、 ... "名前" : "エイブル 3" } ], "最終ページ" : 1, "ページ" : 1, "ページサイズ" : 20、 "合計数" : 3 } -
各エントリ ID をパラメータとして
Ables_PUT_Batchを実行します。 これにより、指定されたエントリの詳細が、API呼び出しで提供された詳細に置き換えられます。./Ables_PUT_Batch.sh {first-entry-id} {second-entry-id} {third-entry-id}{ "className" : "com.liferay.object.rest.dto.v1_0.ObjectEntry", "contentType" : "JSON", "errorMessage" : ""、 "executeStatus" : "INITIAL"、 "externalReferenceCode" : ""、 "failedItems" : [ ]、 "id" : 6、 "importStrategy" : "ON_ERROR_FAIL"、 "操作" : "更新"、 "処理済みアイテム数" : 0、 "開始時刻" : "2022-04-07T23:02:17Z"、 "totalItemsCount" : 0 } -
Ables_GET_FromCompanyを実行して、エントリが更新されたことを確認します。./Ables_GET_FromCompany.sh{ ... "アイテム" : [ { ... "id" : 41985、 ... "名前" : "エイブルワン" }, { ... "id" : 41987、 ... "名前" : "エイブルツー" }, { ... "id" : 41989、 ... "名前" : "エイブルスリー" } ], "最終ページ" : 1, "ページ" : 1, "ページサイズ" : 20、 "合計数" : 3 } -
各エントリ ID をパラメータとして
Ables_DELETE_Batchを実行します。 指定されたエントリを削除します。./Ables_DELETE_Batch.sh {first-entry-id} {second-entry-id} {third-entry-id} -
Ables_GET_FromCompanyを実行して、エントリが削除されたことを確認します。./Ables_GET_FromCompany.sh前の手順でエントリを削除したため、エントリ
が見つかりませんエラーが返されます。
サンプルcURLスクリプトの検証
以下は、チュートリアルで使用するcURLコマンドの例です。
インスタンスへの一括POST
curl \
"http://localhost:8080/o/c/ables/batch" \
--data-raw '
[
{
"name": "Able 1"
},
{
"名前": "エイブル 2"
},
{
"名前": "エイブル 3"
}
]' \
--header "Content-Type: application/json" \
--request "POST" \
--user "test@liferay.com:learn"
インスタンスにAblesをバッチでPUTします
curl \
"http://localhost:8080/o/c/ables/batch" \
--data-raw '
[
{
"id": "'"${1}"'"、
"名前": "エイブルワン"
}、
{
"ID": "'"${2}"'"、
"名前": "エイブルツー"
}、
{
"id": "'"${3}"'",
"name": "エイブルスリー"
}
]' \
--header "Content-Type: application/json" \
--request "PUT" \
--user "test@liferay.com:learn"
インスタンスから一括でAblesを削除
curl \
"http://localhost:8080/o/c/ables/batch" \
--data-raw '
[
{
"id": "'"${1}"'"
},
{
"id": "'"${2}"'"
},
{
"id": "'"${3}"'"
}
]' \
--header "Content-Type: application/json" \
--request "DELETE" \
--user "test@liferay.com:learn"