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

バッチAPIの使用

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

注記

バッチ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) をクリックし、以下の値を入力してください。

    分野価値
    ラベルできる
    複数形ラベルエイブルズ
    名前できる
  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"、
      "操作" : "作成"、
      "処理済みアイテム数" : 0、
      "開始時刻" : "2022-04-07T22:51:37Z"、
      "totalItemsCount" : 0
    }
    
  3. Ables_GET_FromCompany を実行して、エントリが作成されたことを確認します。 これは、すべてのオブジェクトエントリのリストを返します。

    ./Ables_GET_FromCompany.sh
    

    各エントリのIDをコピーして、以下のPUTおよびDELETEメソッドで使用してください。

    {
    ...
      "アイテム" : [ {
    ...
        "id" : 41985、
    ...
        "名前" : "エイブル 1"
      }, {
    ...
        "id" : 41987、
    ...
        "名前" : "エイブル 2"
      }, {
    ...
        "id" : 41989、
    ...
        "名前" : "エイブル 3"
      } ],
      "最終ページ" : 1,
      "ページ" : 1,
      "ページサイズ" : 20、
      "合計数" : 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"、
      "操作" : "更新"、
      "処理済みアイテム数" : 0、
      "開始時刻" : "2022-04-07T23:02:17Z"、
      "totalItemsCount" : 0
    }
    
  5. Ables_GET_FromCompany を実行して、エントリが更新されたことを確認します。

    ./Ables_GET_FromCompany.sh
    
    {
    ...
      "アイテム" : [ {
    ...
        "id" : 41985、
    ...
        "名前" : "エイブルワン"
      }, {
    ...
        "id" : 41987、
    ...
        "名前" : "エイブルツー"
      }, {
    ...
        "id" : 41989、
    ...
        "名前" : "エイブルスリー"
      } ],
      "最終ページ" : 1,
      "ページ" : 1,
      "ページサイズ" : 20、
      "合計数" : 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
    

    前の手順でエントリを削除したため、エントリ が見つかりません エラーが返されます。

サンプルcURLスクリプトの検証

以下は、チュートリアルで使用するcURLコマンドの例です。

インスタンスへの一括POST

curl \
	"http://localhost:8080/o/c/ables/batch" \
	--data-raw '
		[
			{
				"name": "Able 1"
			},
			{
				"名前": "エイブル 2"
			},
			{
				"名前": "エイブル 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}"'"、
				"名前": "エイブルワン"
			}、
			{
				"ID": "'"${2}"'"、
				"名前": "エイブルツー"
			}、
			{
				"id": "'"${3}"'",
				"name": "エイブルスリー"
			}
		]' \
	--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"