バッチAPIの使用

バッチAPIの使用

オブジェクトを公開すると、Liferayは自動的にそのためのREST APIを生成します。 これには、POST、PUT、DELETEの一括操作のためのバッチAPIが含まれます。 ここでは、cURLコマンドを使用して、カスタムオブジェクトのこれらのバッチAPIを呼び出します。

先に進む前に、新しい Liferay DXP/Portal 7.4インスタンスを セットアップ し、提供されたチュートリアルコードを 準備 します。

tip

サイトオブジェクトと会社オブジェクトの両方に対して生成される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_に変更します。

次に、以下の手順に従って、このチュートリアルで使用する基本的なオブジェクトを 作成してください:

  1. グローバルメニュー](../../../../../images/icon-applications-menu.png))を開き、[コントロールパネル](Control Panel)タブに移動し、オブジェクトをクリックします。

  2. 追加 ボタン(ボタンの追加)をクリックし、以下の値を入力します:

    フィールド
    ラベル Able
    複数形のラベル Ables
    名前 Able
  3. 新しい オブジェクト ドラフトを選択し、 フィールド タブに移動し、単一のテキスト フィールド を追加します:

  4. 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呼び出しで提供された詳細を使用して、複数のオブジェクトエントリーを置き換えます
note

GETメソッドは、デモのために含まれています。 これは、Liferayインスタンスのオブジェクトエントリーの完全なリストを返します。

カスタムオブジェクトのAPIを呼び出す

  1. サンプルコードをダウンロード後、 liferay-t4r3プロジェクト内のcurlフォルダに移動します。

    cd liferay-t4r3/curl
    
  2. 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
    }
    
  3. 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
    }
    
  4. 各エントリー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
    }
    
  5. 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
    }
    
  6. 各エントリーIDをパラメーターとしてAbles_DELETE_Batchを実行します。 これにより、指定したエントリーが削除されます。

    ./Ables_DELETE_Batch.sh {first-entry-id} {second-entry-id} {third-entry-id}
    
  7. 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"

関連トピック