REST APIでの集計用語の使用

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_に変更します。

次に、下記の手順で、このチュートリアルの基本オブジェクトを作成します。

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

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

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

    ラベル フィールド名 タイプ 要否
    名前 名前 テキスト
    説明 説明 テキスト
  4. 詳細] タブで 公開 をクリックします。

    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呼び出しで提供された詳細を使用して複数のオブジェクトエントリーを作成します

サンプルコードを使用する

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

    cd liferay-b3x5/curl
    
  2. 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
    }
    
  3. Ables_GET_FromCompanyを実行すると、 aggregatedTerms パラメーターで作成されたすべてのエントリーのリストが返されます。

    レスポンスには、dateModifieddescriptionの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メソッドには、dateModifieddescriptionという2つの値を持つ aggregationTerms URLパラメーターが含まれています。 これらは、リクエスト応答内のオブジェクトエントリーからデータを集約するために使用されるファセット基準を決定します。

追加情報