ナビゲーションメニューAPIの基本¶
LiferayのREST APIは、Liferayのナビゲーションメニューにサービスを提供します。 APIを使用してナビゲーションメニューを作成および編集できます。 まずは、新しいナビゲーションメニューを追加する例を見てみましょう。
ナビゲーションメニューの追加¶
Liferay DXPを起動します。 まだDockerコンテナがない場合は、以下を使用します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:7.4.13-u29
カテゴリーとボキャブラリAPIの基本 をダウンロードして解凍します。
curl https://learn.liferay.com/dxp/latest/ja/site-building/site-navigation/developer-guide/liferay-p7s4.zip -O
unzip liferay-p7s4.zip
サイトのIDを検索します 。 これは、以下のさまざまなサービス呼び出しで使用します。
cURLスクリプトを使用して、サイトに新しいナビゲーションメニューを追加します。 コマンドラインで、
curl
フォルダに移動します。 サイトIDをパラメーターとして使用して、NavigationMenu_POST_ToSite.sh
スクリプトを実行します。./NavigationMenu_POST_ToSite.sh 1234
JSONのレスポンスには、新しいナビゲーションメニューが追加されたことが示されています。
"creator" : { "additionalName" : "", "contentType" : "UserAccount", "familyName" : "Test", "givenName" : "Test", "id" : 20129, "name" : "Test Test" }, "dateCreated" : "2021-09-09T21:41:31Z", "dateModified" : "2021-09-09T21:41:31Z", "id" : 40131, "name" : "Foo", "navigationMenuItems" : [ ], "siteId" : 20125
[Administration Menu] → [サイトビルダー] → [Navigation Menus] に移動して、ナビゲーションメニューアプリケーションに移動します。 新しいナビゲーションメニューが追加されたことを確認してください。
RESTサービスは、Javaクライアントを使って呼び出すこともできます。
curl
フォルダから、java
フォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。javac -classpath .:* *.java
以下のコマンドを使用して
NavigationMenu_POST_ToSite
クラスを実行します。siteId
値をサイトのIDに置き換えます。java -classpath .:* -DsiteId=1234 NavigationMenu_POST_ToSite
cURLコマンドの検証¶
NavigationMenu_POST_ToSite.sh
スクリプトは、cURLコマンドを使用してRESTサービスを呼び出します。
curl \
-H "Content-Type: application/json" \
-X POST \
"http://localhost:8080/o/headless-delivery/v1.0/sites/${1}/navigation-menus" \
-d "{\"name\": \"Foo\"}" \
-u "[email protected]:learn"
ここでは、コマンドの引数を紹介します。
引数 |
Description |
---|---|
|
リクエストボディのフォーマットがJSONであることを示します。 |
|
指定されたエンドポイントで起動するHTTPメソッド |
|
RESTサービスのエンドポイント |
|
お客様が掲載を希望するデータ |
|
基本的な認証情報 |
注釈
ここでは、デモのためにベーシック認証を使用しています。 本番環境では、OAuth2を介してユーザーを認証する必要があります。
他のcURLコマンドも同様のJSON引数を使用しています。
Javaクラスを調べる¶
NavigationMenu_POST_ToSite.java
クラスは、ナビゲーションメニュー関連サービスを呼び出すことによってナビゲーションメニューを追加します。
public static void main(String[] args) throws Exception {
NavigationMenuResource.Builder builder =
NavigationMenuResource.builder();
NavigationMenuResource navigationMenuResource = builder.authentication(
"[email protected]", "learn"
).build();
NavigationMenu navigationMenu =
navigationMenuResource.postSiteNavigationMenu(
Long.valueOf(System.getProperty("siteId")),
new NavigationMenu() {
{
name = "Foo";
}
});
System.out.println(navigationMenu);
}
このクラスは、わずか3行のコードでRESTサービスを呼び出します。
行(省略形) |
説明 |
---|---|
|
|
|
基本認証を指定し、 |
|
|
プロジェクトには、依存関係としてcom.liferay.headless.delivery.client.jar
ファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/api
でインストール先のAPIエクスプローラーで確認できます。
注釈
main
メソッドのコメントでは、クラスの実行を実演しています。
他の例のJavaクラスはこれと類似していますが、異なるNavigationMenuResource
メソッドを呼び出します。
重要
サービスの詳細は、 NavigationMenuResource を参照してください。
以下は、cURLとJavaを使って、他のNavigationMenu
RESTサービスを呼び出す例です。
サイトからナビゲーションメニューを取得する¶
次のcURLまたはJavaコマンドを実行すると、サイトのナビゲーションメニューを一覧表示できます。 上記のように、1234
をサイトのIDに置き換えてください。
ナビゲーションメニューを取得する¶
以下のcURLまたはJavaコマンドで特定のナビゲーションメニューを取得します。 1234
をナビゲーションメニューのIDに置き換えてください。
ちなみに
avigationMenus_GET_FromSite.[java|sh]を使用して、
NavigationMenu` IDを取得します。
ナビゲーションメニューを配置する¶
次のcURLおよびJavaコマンドを使用して、既存のナビゲーションメニューを完全に上書きします。 なお、 1234
は、ナビゲーションメニューのIDに置き換えてください。