オブジェクトAPIの基本
オブジェクトを公開すると、Liferayは自動的にそのためのREST APIを生成します。 これらのAPIは、会社とサイトに範囲指定されたオブジェクトで異なりますが、すべてc/[pluralobjectlabel]
の命名パターン(例: c/timeoffrequests
)を使用します。 これらのAPIを使用して、オブジェクトエントリーの作成、アクセス、更新、および削除を行うことができます。
ここでは、cURLコマンドを使用して、カスタムオブジェクトの基本的なCRUD操作を実行します。 先に進む前に、新しい Liferay DXP/Portal 7.4インスタンスを セットアップ し、提供されたチュートリアルコードを 準備 します。
サイトオブジェクトと会社オブジェクトの両方に対して生成される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_に変更します。
次に、下記の手順で、このチュートリアルの基本オブジェクトを作成します。
グローバルメニュー(
)を開き、 [コントロールパネル] タブで [オブジェクト] をクリックします。
追加 ボタン(
)をクリックして、下記の値を入力します。
フィールド 値 ラベル Able
複数形ラベル Ables
名前 Able
新規の オブジェクト ドラフトを選択し、 フィールド タブに移動して、単一のテキストフィールドを追加します。
ラベル フィールド名 タイプ 要否 名前 名前 テキスト ✔ [詳細] タブに移動し、 [公開] をクリックします。
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を呼び出す
サンプルコードをダウンロード後、
liferay-v1s4
プロジェクト内のcurl
フォルダに移動します。cd liferay-v1s4/curl
Able_POST_ToCompany
を実行します。 これにより、3つのエントリーが作成されます。./Able_POST_ToCompany.sh
ターミナルには、新しく作成されたエントリーの完全なスキーマが表示されます。 次のメソッドで使用するために、最初のエントリーのIDをコピーします。
{ "id" : 41969, ... "name" : "Able 1" } { "id" : 41971, ... "name" : "Able 2" } { "id" : 41973, ... "name" : "Able 3" }
Ables_GET_FromCompany
を実行します。 オブジェクトエントリーのリストが返されます。./Ables_GET_FromCompany.sh
最初のエントリーのIDをパラメーターとして
Able_PUT_ById
を実行します。 これにより、指定されたエントリーの詳細がAPI呼び出しで提供された詳細に置き換えられます。./Able_PUT_ById.sh {entry-id}
{ "id" : 41969, ... "name" : "Able One" }
同じIDをそのパラメーターとして、
Able_DELETE_ById
を実行します。 これにより、指定したエントリーが削除されます。./Able_DELETE_ById.sh {entry-id}
同じ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"