Custom Object APIs
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

バッチ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に変更します。

次に、以下の手順に従って、このチュートリアル用の基本オブジェクトを作成します:

  1. グローバルメニューGlobal Menu)を開き、[コントロールパネル]タブに移動し、[オブジェクト]をクリックします。

  2. 追加 ボタン (Add Button) をクリックし、以下の値を入力してください。

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

    ラベル項目名種類必須
    名前名前テキストボックス
  4. 詳細 タブに移動し、 公開 をクリックします。

    重要

    このチュートリアルでは、上記の値を使用する必要があります。

オブジェクトの公開 は、データの受信と保存のための新しいアプリケーションを作成してアクティブ化します。 ヘッドレスAPIを介してアクセスできるようになりました。

サンプルコードを準備する

以下のコマンドを実行して、提供されたサンプルコードをダウンロードし、解凍してください。

curl https://resources.learn.liferay.com/examples/liferay-t4r3.zip -O
unzip liferay-t4r3.zip

これらのスクリプトには、以下のバッチAPIが含まれています。

HTTP メソッドHTTPエンドポイント説明
DELETE/batch複数のオブジェクトエントリーを削除します
POST/batchAPI呼び出しで提供された詳細を使用して複数のオブジェクトエントリーを作成します
PUT/batchAPI呼び出しで提供された詳細を使用して、複数のオブジェクトエントリーを置き換えます

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スクリプトの検証

以下は、チュートリアルの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"