バッチAPIの使用
オブジェクトを公開すると、Liferayは自動的にそのためのREST APIを生成します。 これには、POST、PUT、DELETEの一括操作のためのバッチAPIが含まれます。 ここでは、cURLコマンドを使用して、カスタムオブジェクトのこれらのバッチ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に変更します。
次に、以下の手順に従って、このチュートリアル用の基本オブジェクトを作成します:
-
グローバルメニュー(
)を開き、[コントロールパネル]タブに移動し、[オブジェクト]をクリックします。 -
追加 ボタン (
) をクリックし、以下の値を入力してください。項目 値 ラベル Able複数形のラベル Ables名前 Able -
新しい オブジェクト ドラフトを選択し、 フィールド タブに移動して、単一のテキスト フィールド を追加します。
ラベル 項目名 種類 必須 名前 名前 テキストボックス ✔ -
詳細 タブに移動し、 公開 をクリックします。
重要このチュートリアルでは、上記の値を使用する必要があります。
オブジェクトの公開 は、データの受信と保存のための新しいアプリケーションを作成してアクティブ化します。 ヘッドレス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プロジェクト内のcurlフォルダに移動します。cd 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", "operation" : "CREATE", "processedItemsCount" : 0, "startTime" : "2022-04-07T22:51:37Z", "totalItemsCount" : 0 } -
Ables_GET_FromCompanyを実行し、エントリーが作成されたことを確認します。 すべてのオブジェクトエントリーのリストが返されます。./Ables_GET_FromCompany.sh各エントリーのIDをコピーして、以下のPUTおよびDELETEメソッドで使用します。
{ ... "items" : [ { ... "id" : 41985, ... "name" : "Able 1" }, { ... "id" : 41987, ... "name" : "Able 2" }, { ... "id" : 41989, ... "name" : "Able 3" } ], "lastPage" : 1, "page" : 1, "pageSize" : 20, "totalCount" : 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", "operation" : "UPDATE", "processedItemsCount" : 0, "startTime" : "2022-04-07T23:02:17Z", "totalItemsCount" : 0 } -
Ables_GET_FromCompanyを実行し、エントリーが更新されたことを確認します。./Ables_GET_FromCompany.sh{ ... "items" : [ { ... "id" : 41985, ... "name" : "Able One" }, { ... "id" : 41987, ... "name" : "Able Two" }, { ... "id" : 41989, ... "name" : "Able Three" } ], "lastPage" : 1, "page" : 1, "pageSize" : 20, "totalCount" : 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前のステップでエントリーを削除しているので、エントリー
NOT FOUNDエラーが返されます。
サンプルのcURLスクリプトの検証
以下は、チュートリアルのcURLコマンドの例です。
インスタンスへの一括POST
curl \
"http://localhost:8080/o/c/ables/batch" \
--data-raw '
[
{
"name": "Able 1"
},
{
"name": "Able 2"
},
{
"name": "Able 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}"'",
"name": "Able One"
},
{
"id": "'"${2}"'",
"name": "Able Two"
},
{
"id": "'"${3}"'",
"name": "Able Three"
}
]' \
--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"