バッチAPIの使用
オブジェクトを公開すると、Liferayは自動的にそのためのREST APIを生成します。 これには、POST、PUT、DELETEの一括操作のためのバッチAPIが含まれます。 ここでは、cURLコマンドを使用して、カスタムオブジェクトのこれらのバッチAPIを呼び出します。
先に進む前に、新しい Liferay DXP/Portal 7.4インスタンスを セットアップ し、提供されたチュートリアルコードを 準備 します。
サイトオブジェクトと会社オブジェクトの両方に対して生成されるAPIの完全なリストについては、オブジェクトのヘッドレスフレームワークの統合を参照してください。 カスタムオブジェクトAPIは、LiferayAPIエクスプローラーを通して[server]:[port]/o/api
(例:localhost:8080/o/api
)で表示およびテストできます。 これらは、*[RESTアプリケーション]*の下に表示されます。
Liferayインスタンスのセットアップ
新しいLiferay インスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.86-ga86。
http://localhost:8080でLiferayへのサインインします。 メールアドレス_test@liferay.com_とパスワード_test_を使用してください。 プロンプトが表示されたら、パスワードを _learn_に変更します。
次に、以下の手順に従って、このチュートリアルで使用する基本的なオブジェクトを 作成してください:
グローバルメニュー](../../../../../images/icon-applications-menu.png))を開き、[コントロールパネル](Control Panel)タブに移動し、オブジェクトをクリックします。
追加 ボタン(
)をクリックし、以下の値を入力します:
フィールド 値 ラベル Able
複数形のラベル Ables
名前 Able
新しい オブジェクト ドラフトを選択し、 フィールド タブに移動し、単一のテキスト フィールド を追加します:
Details タブに移動し、 Publish をクリックします。
importantこのチュートリアルでは、上記の値を使用する必要があります。
オブジェクトの公開 は、データの受信と保存のための新規アプリケーションを作成し、有効にします。 ヘッドレスAPIを介してアクセスできるようになりました。
サンプルコードを準備する
以下のコマンドを実行して、提供されたサンプルコードをダウンロードし、解凍してください。
curl https://resources.learn.liferay.com/dxp/latest/en/building-applications/objects/objects-tutorials/using-apis/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 \
-H "Content-Type: application/json" \
-X POST \
"http://localhost:8080/o/c/ables/batch" \
-d "[{\"name\": \"Able 1\"}, {\"name\": \"Able 2\"}, {\"name\": \"Able 3\"}]" \
-u "test@liferay.com:learn"
Ables_PUT_Batch.sh
curl \
-H "Content-Type: application/json" \
-X PUT \
"http://localhost:8080/o/c/ables/batch" \
-d "[{\"id\": ${1}, \"name\": \"Able One\"}, {\"id\": ${2}, \"name\": \"Able Two\"}, {\"id\": ${3}, \"name\": \"Able Three\"}]" \
-u "test@liferay.com:learn"
Ables_DELETE_Batch.sh
curl \
-H "Content-Type: application/json" \
-X DELETE \
"http://localhost:8080/o/c/ables/batch" \
-d "[{\"id\": ${1}}, {\"id\": ${2}}, {\"id\": ${3}}]" \
-u "test@liferay.com:learn"