オブジェクトAPIの基本

オブジェクトAPIの基本

オブジェクトを公開すると、Liferayは自動的にそのためのREST APIを生成します。 これらのAPIは、会社とサイトに範囲指定されたオブジェクトで異なりますが、すべてc/[pluralobjectlabel] の命名パターン(例: c/timeoffrequests)を使用します。 これらのAPIを使用して、オブジェクトエントリーの作成、アクセス、更新、および削除を行うことができます。

ここでは、cURLコマンドを使用して、カスタムオブジェクトの基本的なCRUD操作を実行します。 先に進む前に、新しい Liferay DXP/Portal 7.4インスタンスを セットアップ し、提供されたチュートリアルコードを 準備 します。

tip

サイトオブジェクトと会社オブジェクトの両方に対して生成されるAPIの完全なリストについては、オブジェクトのヘッドレスフレームワークの統合を参照してください。 カスタムオブジェクトAPIは、LiferayAPIエクスプローラーを通して[server]:[port]/o/api (例:localhost:8080/o/api)で表示およびテストできます。 これらは、REST Applicationsの下にリストされています。

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-v1s4.zip -O
unzip liferay-v1s4.zip

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

HTTP メソッド HTTPエンドポイント 説明
GET / Liferayインスタンスのオブジェクトエントリーの完全なリストを返します。結果は、ページ分割、絞り込み、検索、およびソートが可能です
POST / APIコールで提供された詳細を使用して、新しいオブジェクトエントリーを作成します
DELETE /{objectNameId} 指定されたオブジェクトエントリーを削除し、操作が成功した場合は204を返します
GET /{objectNameId} 指定されたオブジェクトエントリーの詳細を返します
PUT /{objectNameId} 指定されたオブジェクトエントリーの詳細を、API呼び出しで提供されたものに置き換えます

カスタムオブジェクトのAPIを呼び出す

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

    cd liferay-v1s4/curl
    
  2. Able_POST_ToCompanyを実行します。 これにより、3つのエントリーが作成されます。

    ./Able_POST_ToCompany.sh
    

    ターミナルには、新しく作成されたエントリーの完全なスキーマが表示されます。 次のメソッドで使用するために、最初のエントリーのIDをコピーします。

    {
      "id" : 41969,
      ...
      "name" : "Able 1"
    }
    
    {
      "id" : 41971,
      ...
      "name" : "Able 2"
    }
    
    {
      "id" : 41973,
      ...
      "name" : "Able 3"
    }
    
  3. Ables_GET_FromCompanyを実行します。 オブジェクトエントリーのリストが返されます。

    ./Ables_GET_FromCompany.sh
    
  4. 最初のエントリーのIDをパラメーターとしてAble_PUT_ByIdを実行します。 これにより、指定されたエントリーの詳細がAPI呼び出しで提供された詳細に置き換えられます。

    ./Able_PUT_ById.sh {entry-id}
    
    {
      "id" : 41969,
      ...
      "name" : "Able One"
    }
    
  5. 同じIDをそのパラメーターとして、Able_DELETE_ByIdを実行します。 これにより、指定したエントリーが削除されます。

    ./Able_DELETE_ById.sh {entry-id}
    
  6. 同じIDをそのパラメーターとして、Able_GET_ByIdを実行します。 これにより、指定されたエントリーが存在する場合はその詳細が返されます。

    ./Able_GET_ById.sh {entry-id}
    

    前の手順でエントリーを削除したため、次のメッセージが返されます。

    {
      "status" : "NOT_FOUND",
      "title" : "No ObjectEntry exists with the primary key 41969"
    }
    

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

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

Able_POST_ToCompany.sh

curl \
	-H "Content-Type: application/json" \
	-X POST \
	"http://localhost:8080/o/c/ables/" \
	-d "{\"name\": \"Able 1\"}" \
	-u "[email protected]:learn"

curl \
	-H "Content-Type: application/json" \
	-X POST \
	"http://localhost:8080/o/c/ables/" \
	-d "{\"name\": \"Able 2\"}" \
	-u "[email protected]:learn"

curl \
	-H "Content-Type: application/json" \
	-X POST \
	"http://localhost:8080/o/c/ables/" \
	-d "{\"name\": \"Able 3\"}" \
	-u "[email protected]:learn"

Able_PUT_ById.sh

curl \
	-H "Content-Type: application/json" \
	-X PUT \
	"http://localhost:8080/o/c/ables/${1}" \
	-d "{\"name\": \"Able One\"}" \
	-u "[email protected]:learn"

追加情報