バッチAPIの使用
オブジェクトを公開すると、Liferayは自動的にそのためのREST APIを生成します。 これには、POST、PUT、DELETEの一括操作のためのバッチAPIが含まれます。 ここでは、cURLコマンドを使用して、カスタムオブジェクトのこれらのバッチAPIを呼び出します。
続行する前に、 新しい Liferay DXP/Portal 7.4 インスタンスをセットアップ し、提供されているチュートリアル コードを 準備 してください。
サイト オブジェクトと会社オブジェクトの両方に対して生成された API の完全なリストについては、 オブジェクトのヘッドレス フレームワーク統合を参照してください。 Liferay API Explorer の [server]:[port]/o/api (例: localhost:8080/o/api)からカスタムオブジェクト 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 -
新しい オブジェクト ドラフトを選択し、 フィールド タブに移動して、単一のテキスト フィールドを追加します。
ラベル 項目名 種類 必須 名前 name テキストボックス ✔ -
詳細 タブに移動し、 公開をクリックします。
重要このチュートリアルでは、上記の値を使用する必要があります。
オブジェクトを公開する と、データを受信して保存するための新しいアプリケーションが作成され、アクティブ化されます。 ヘッドレス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スクリプトの検証
Ables_POST_Batch.sh
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_Batch.sh
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_DELETE_Batch.sh
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"