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

関連REST APIの利用

ライフレイ 7.4 U70+/GA70+

カスタムオブジェクトやシステムオブジェクトに関連を追加すると、Liferayはそれらの関連にアクセスするためのRESTエンドポイントを生成します。 エントリーの関連付けや関連付けの解除、エントリーの関連エントリーを返すことができます。 これらのエンドポイントは、1対多の関連では親オブジェクトに、多対多の関連では両方のオブジェクトに追加されます。

続行するには、 新しい Liferay 7.4 インスタンスをセットアップ し、提供されているチュートリアル コードを 準備 します。 その後、スクリプトを実行してオブジェクトエントリーを作成し、互いの関連を管理します。

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

次に、 関連するカスタム オブジェクトを 3 つ作成 します。

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

  2. 3つのオブジェクトドラフトを作成します。

    最初のオブジェクト:

    項目
    ラベルAble
    複数形のラベルAbles
    名前Able

    2番目のオブジェクト:

    項目
    ラベルBaker
    複数形のラベルBakers
    名前Baker

    3番目のオブジェクト:

    項目
    ラベルCharlie
    複数形のラベルCharlies
    名前Charlie
  3. 各オブジェクトのドラフトに 名前 フィールドを追加します。

    ラベル項目名種類必須
    Namenameテキストボックス
  4. これらの関係を able オブジェクトに追加します。

    ラベルリレーション名種類オブジェクト
    Able to BakerableToBaker1 対多ベイカー
    Able to CharlieableToCharlie1 対多チャーリー
  5. 各オブジェクトを 公開します。

公開されると、次の関係 API を含む REST API にアクセスできるようになります。

オブジェクトHTTPメソッドHTTPエンドポイントJavaメソッド
できるGET/{ableId}/ableToBakergetAbleAbleToBakerBakerPage
できるGET/{ableId}/ableToCharliegetAbleAbleToCharlieCharliePage
できるDELETE/{ableId}/ableToBaker/{bakerId}deleteAbleAbleToBakerBaker
できるPUT/{ableId}/ableToBaker/{bakerId}putAbleAbleToBakerBaker
できるDELETE/{ableId}/ableToCharlie/{charlieId}deleteAbleAbleToCharlieCharlie
できるPUT/{ableId}/ableToCharlie/{charlieId}putAbleAbleToCharlieCharlie
できるPUT/by-external-reference-code/{ableERC}/ableToBaker/{bakerERC}putAbleAbleToBakerBaker
できるPUT/by-external-reference-code/{ableERC}/ableToCharlie/{charlieERC}putAbleAbleToCharlieCharlie
チャーリーGET/{charlieId}/ableToCharliegetCharlieAbleToCharlieAblePage
チャーリーDELETE/{charlieId}/ableToCharlie/{ableId}deleteCharlieAbleToCharlieAble
チャーリーPUT/{charlieId}/ableToCharlie/{ableId}putCharlieAbleToCharlieAble
チャーリーPUT/by-external-reference-code/{ableERC}/ableToCharlie/{charlieERC}putCharlieAbleToCharlieAble
ヒント

サイトおよび会社オブジェクト用に生成された API の完全なリストについては、 オブジェクト ヘッドレス フレームワーク統合を参照してください。 Liferay API Explorer の [server]:[port]/o/api (例: localhost:8080/o/api)からカスタムオブジェクト API を表示およびテストできます。 REST アプリケーション をクリックし、API を選択します。

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

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

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

サンプルコードには、各オブジェクトのエントリーを作成し、その関連APIを使用するためのコマンドが含まれています。

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

REST APIを使用して、オブジェクトのエントリーを追加し、その関連を管理します。

  1. liferay-f9m2プロジェクト内のcurlフォルダに移動します。

    cd liferay-f9m2/curl
    
  2. POSTコマンドを実行し、各オブジェクトに3つのエントリーを作成します。 これらのエントリーは、 [objectname]-[number]の命名パターンに従って、あらかじめ定義された外部参照コード(ERC)を持っています(例: able-one)。

    ./Ables_POST_Batch.sh
    
    ./Bakers_POST_Batch.sh
    
    ./Charlies_POST_Batch.sh
    
  3. Ables_PUT_AbleToBakers_ByExternalReferenceCodeable-one ERC と 3 つの baker ERC すべてで実行します。

    ./Ables_PUT_AbleToBakers_ByExternalReferenceCode.sh able-one baker-one baker-two baker-three
    

    これにより、ableエントリとbakerエントリが関連付けられ、そのレスポンスが出力されます。

    {
      ...
      "externalReferenceCode" : "baker-one",
      "id" : 42427,
      ...
      "name" : "Baker 1",
      "r_ableToBaker_c_ableId" : 42421,
      "r_ableToBaker_c_ableERC" : "able-one"
    }
    
    {
      ...
      "externalReferenceCode" : "baker-two",
      "id" : 42429,
      ...
      "name" : "Baker 2",
      "r_ableToBaker_c_ableId" : 42421,
      "r_ableToBaker_c_ableERC" : "able-one"
    }
    
    {
      ...
      "externalReferenceCode" : "baker-three",
      "id" : 42431,
      ...
      "name" : "Baker 3",
      "r_ableToBaker_c_ableId" : 42421,
      "r_ableToBaker_c_ableERC" : "able-one"
    }
    
  4. Ables_DELETE_AbleToBakers_ById を 2 つの ID ( able-one の ID と baker-threeの ID) で実行します。

    ./Ables_DELETE_AbleToBaker_ById.sh {able-entry-id} {baker-entry-id}
    

    これにより、エントリーの関連付けが解除されます。

  5. 同じエイブルIDで Ables_GET_AbleToBaker_ById を実行し、関連がなくなったことを確認します。

    ./Ables_GET_AbleToBaker_ById.sh {able-entry-id}
    
    {
      ...
      "externalReferenceCode" : "baker-two",
      "id" : 42429,
      ...
      "name" : "Baker 2",
      "r_ableToBaker_c_ableId" : 42421,
      "r_ableToBaker_c_ableERC" : "able-one"
    },
    {
      ...
      "externalReferenceCode" : "baker-one",
      "id" : 42427,
      ...
      "name" : "Baker 1",
      "r_ableToBaker_c_ableId" : 42421,
      "r_ableToBaker_c_ableERC" : "able-one"
    }
    
  6. Ables_PUT_AbleToCharlie_ByExternalReferenceCodeable-one ERC と 3 つの charlie ERC すべてで実行します。

    ./Ables_PUT_AbleToCharlie_ByExternalReferenceCode.sh able-one charlie-one charlie-two charlie-three
    

    これにより、ableエントリーとcharlieエントリーが関連付けられ、そのレスポンスが出力されます。

    {
      ...
      "externalReferenceCode" : "charlie-one",
      "id" : 42433,
      ...
      "name" : "Charlie 1"
    }
    {
      ...
      "externalReferenceCode" : "charlie-two",
      "id" : 42435,
      ...
      "name" : "Charlie 2"
    }
    {
      ...
      "externalReferenceCode" : "charlie-three",
      "id" : 42437,
      ...
      "name" : "Charlie 3"
    }
    
  7. Charlies_GET_AbleToCharlie_ByIdcharlie-oneの ID で実行します。

    ./Charlies_GET_AbleToCharlie_ById.sh {charlie-entry-id}
    

    指定されたcharlieエントリーに関連するすべてのableエントリーのリストを返します。

    {
      ...
      "items" : [ {
        ...
        "externalReferenceCode" : "able-one",
        "id" : 42421,
        ...
        "name" : "Able 1"
      } ],
      "lastPage" : 1,
      "page" : 1,
      "pageSize" : 1,
      "totalCount" : 1
    }
    
  8. Charlies_PUT_AbleToCharlie_ByExternalReferenceCodecharlie-one および able-two ERC で実行します。

    ./Charlies_PUT_AbleToCharlie_ByExternalReferenceCode.sh charlie-one able-two
    

    これは、charlieエントリーを別のableエントリーに関連付けるものです。

    {
      ...
      "externalReferenceCode" : "able-two",
      "id" : 42423,
      ...
      "name" : "Able 2"
    }
    
  9. Charlies_GET_AbleToCharlie_ByIdcharlie-one の ID で実行し、関連する 2 つの able エントリがあることを確認します。

    ./Charlies_GET_AbleToCharlie_ById.sh {charlie-entry-id}
    
    {
      ...
      "items" : [ {
        ...
        "externalReferenceCode" : "able-two",
        "id" : 42423,
        ...
        "name" : "Able 2"
      }, {
        ...
        "externalReferenceCode" : "able-one",
        "id" : 42421,
        ...
        "name" : "Able 1"
      } ],
      "lastPage" : 1,
      "page" : 1,
      "pageSize" : 2,
      "totalCount" : 2
    }
    
  10. Ables_GET_ByIdable-oneの ID で実行します。

    ./Ables_GET_ById.sh {able-entry-id}
    

    このコマンドは、nestedFieldsパラメーターを使用して、関連するすべての baker および charlie エントリーを返します。

    {
      "externalReferenceCode" : "able-one",
      "id" : 42421,
      ...
      "ableToCharlie" : [ {
        ...
        "externalReferenceCode" : "charlie-one",
        "id" : 42433,
        ...
        "name" : "Charlie 1"
      }, {
        ...
        "externalReferenceCode" : "charlie-two",
        "id" : 42435,
        ...
        "name" : "Charlie 2"
      }, {
        ...
        "externalReferenceCode" : "charlie-three",
        "id" : 42437,
        ...
        "name" : "Charlie 3"
      } ],
      "name" : "Able 1",
      "ableToBaker" : [ {
        ...
        "externalReferenceCode" : "baker-one",
        "id" : 42427,
        ...
        "name" : "Baker 1",
        "r_ableToBaker_c_ableId" : 42421,
        "r_ableToBaker_c_ableERC" : "able-one"
      }, {
        ...
        "externalReferenceCode" : "baker-two",
        "id" : 42429,
        ...
        "name" : "Baker 2",
        "r_ableToBaker_c_ableId" : 42421,
        "r_ableToBaker_c_ableERC" : "able-one"
      } ]
    }
    

    nestedFields パラメータの詳細については、 nestedFields を使用して関連エントリを照会する を参照してください。

コードを調べる

Charlies_PUT_AbleToCharlie_ByExternalReferenceCode

curl \
	"http://localhost:8080/o/c/charlies/by-external-reference-code/${1}/ableToCharlie/${2}" \
	--header "Content-Type: application/json" \
	--request "PUT" \
	--user "test@liferay.com:learn"

Charlies_GET_AbleToCharlie_ById

curl \
	"http://localhost:8080/o/c/charlies/${1}/ableToCharlie" \
	--header "Content-Type: application/json" \
	--user "test@liferay.com:learn"

Ables_DELETE_AbleToBaker_ById

curl \
	"http://localhost:8080/o/c/ables/${1}/ableToBaker/${2}" \
	--header "Content-Type: application/json" \
	--request "DELETE" \
	--user "test@liferay.com:learn"

Ables_GET_ById.sh

curl \
	"http://localhost:8080/o/c/ables/${1}/?nestedFields=ableToBaker,ableToCharlie" \
	--user "test@liferay.com:learn"