REST APIでの集計用語の使用
REST APIを使用してオブジェクトエントリーを照会する場合、オブジェクトのフィールドをファセット基準として使用してエントリーデータを集計できます。 これを行うには、GETリクエストに aggregationTerms
パラメーターを追加し、ファセット基準として使用したいデータフィールドを指定します。 これらの基準には、カスタムフィールド、デフォルトのシステムフィールド、またはリレーションシップフィールドを含めることができます。 その後、リクエストレスポンスは指定されたデータファセットを単一のfacets
ブロックにグループ化します。
ここでは、 aggregatedTerms
パラメーターを、基本的なカスタムオブジェクトと一緒に使用します。
先に進む前に、新しい Liferay DXP/Portal 7.4インスタンスを セットアップ し、提供されたチュートリアルコードを 準備 します。
Liferayインスタンスのセットアップ
新しいLiferay インスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.55-ga55。
http://localhost:8080でLiferayへのサインインします。 メールアドレス[email protected]_とパスワード_test_を使用してください。 プロンプトが表示されたら、パスワードを _learn_に変更します。
次に、下記の手順で、このチュートリアルの基本オブジェクトを作成します。
グローバルメニュー(
)を開き、 [コントロールパネル] タブで [オブジェクト] をクリックします。
追加 ボタン(
)をクリックし、下記の値を入力します。
フィールド 値 ラベル Able
複数形ラベル Ables
名前 Able
新規の オブジェクト ドラフトを選択し、 [フィールド] タブに移動して、次のテキストフィールドを追加します。
ラベル フィールド名 タイプ 要否 名前 名前 テキスト ✔ 説明 説明 テキスト [詳細] タブで 公開 をクリックします。
importantこのチュートリアルでは、上記の値を使用する必要があります。
公開後は、ヘッドレスAPIでオブジェクトにアクセスすることができます。
サンプルコードを準備する
以下のコマンドを実行して、提供されたサンプルコードをダウンロードし、解凍してください。
curl https://resources.learn.liferay.com/dxp/latest/ja/building-applications/objects/objects-tutorials/using-apis/liferay-b3x5.zip -O
unzip liferay-b3x5.zip
これらのスクリプトには、以下のAPIが含まれています。
HTTP メソッド | HTTPエンドポイント | 説明 |
---|---|---|
GET | / |
Liferayインスタンスのオブジェクトエントリーの完全なリストを返します。結果は、ページ分割、絞り込み、検索、およびソートが可能です |
POST | /batch |
API呼び出しで提供された詳細を使用して複数のオブジェクトエントリーを作成します |
サンプルコードを使用する
サンプルコードをダウンロード後、
lliferay-b3x5
プロジェクト内のcurl
フォルダに移動します。cd liferay-b3x5/curl
Ables_POST_Batch
を実行します。 複数のオブジェクトエントリーを作成します。./Ables_POST_Batch.sh
端末には同様の出力が表示されるはずです。
{ "className" : "com.liferay.object.rest.dto.v1_0.ObjectEntry", "contentType" : "JSON", "errorMessage" : "", "executeStatus" : "STARTED", "externalReferenceCode" : "", "failedItems" : [ ], "id" : 1, "importStrategy" : "ON_ERROR_FAIL", "operation" : "CREATE", "processedItemsCount" : 0, "startTime" : "2022-04-27T00:18:23Z", "totalItemsCount" : 0 }
Ables_GET_FromCompany
を実行すると、aggregatedTerms
パラメーターで作成されたすべてのエントリーのリストが返されます。レスポンスには、
dateModified
とdescription
の2つのファセット基準を持つfacets
ブロックが含まれる必要があります。... "facets" : [ { "facetCriteria" : "dateModified", "facetValues" : [ { "numberOfOccurrences" : 3, "term" : "20220427001823" } ] }, { "facetCriteria" : "description", "facetValues" : [ { "numberOfOccurrences" : 1, "term" : "bar" }, { "numberOfOccurrences" : 1, "term" : "foo" }, { "numberOfOccurrences" : 1, "term" : "goo" } ] } ], ...
このブロックの後に、標準的なGETレスポンスが続きます。
{ ... "id" : 41969, ... "name" : "Able 1", "description" : "Foo" ... }, { ... "id" : 41971, ... "name" : "Able 2", "description" : "Bar" }, { ... "id" : 41973, ... "name" : "Able 3", "description" : "Goo" } ...
コードを調べる
curl \
"http://localhost:8080/o/c/ables/?aggregationTerms=dateModified,description" \
-u "[email protected]:learn"
この一括GETメソッドには、dateModified
とdescription
という2つの値を持つ aggregationTerms
URLパラメーターが含まれています。 これらは、リクエスト応答内のオブジェクトエントリーからデータを集約するために使用されるファセット基準を決定します。