Documentation

ナビゲーションメニューAPIの基本

LiferayのREST APIは、Liferayのナビゲーションメニューにサービスを提供します。 APIを使用してナビゲーションメニューを作成および編集できます。 まずは、新しいナビゲーションメニューを追加する例を見てみましょう。

ナビゲーションメニューの追加

新しいLiferay DXPインスタンスを起動し、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/dxp:7.4.13-u29。

メールアドレス_test@liferay.com_とパスワード_test_を使用して、http://localhost:8080でLiferayにサインインしてください。 プロンプトが表示されたら、パスワードを _learn_に変更します。

次に、以下の手順を実行します。

  1. Categories and Vocabulary API Basics をダウンロードし、解凍してください。.

    curl https://learn.liferay.com/dxp/latest/ja/site-building/site-navigation/developer-guide/liferay-p7s4.zip -O
    
    unzip liferay-p7s4.zip
    
  2. サイトのIDを検索します 。 これは、以下のさまざまなサービス呼び出しで使用します。

  3. 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
    
  4. Administration Menu] → [サイトビルダー] → [Navigation Menus] に移動して、ナビゲーションメニューアプリケーションに移動します。 新しいナビゲーションメニューが追加されたことを確認してください。

    新しいナビゲーションメニューが追加されたことを確認してください。

  5. RESTサービスは、Javaクライアントを使って呼び出すこともできます。 curl フォルダから、 java フォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。

    javac -classpath .:* *.java
    
  6. 以下のコマンドを使用して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"

コマンドの引数は次のとおりです。

引数

説明

-H "Content-Type: application/json"

リクエストボディのフォーマットがJSONであることを示します。

-X POST

指定されたエンドポイントで起動するHTTPメソッド

"http://localhost:8080/o/headless-delivery/v1.0/sites/${1}/navigation-menus"

RESTサービスのエンドポイント

-d "{\"name\": \"Foo\"}"

お客様が掲載を希望するデータ

-u "test@liferay.com:learn"

基本的な認証情報

注釈

ここでは、デモのためにベーシック認証を使用しています。 本番環境では、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サービスを呼び出します。

行(省略形)

説明

NavigationMenuResource.Builder builder = ...

Builderを取得し、NavigationMenuResourceサービスインスタンスを生成します。

NavigationMenuResource navigationMenuResource = builder.authentication(...).build();

基本認証を指定し、NavigationMenuResourceサービスインスタンスを生成します。

NavigationMenu navigationMenu = navigationMenuResource.postSiteNavigationMenu(...);

navigationMenuResource.postSiteNavigationMenuメソッドを呼び出し、投稿するデータを渡します。

プロジェクトには、依存関係として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に置き換えてください。

Tip

NavigationMenus_GET_FromSite.[java|sh]を使用して、NavigationMenu IDを取得します。

ナビゲーションメニューを配置する

次のcURLおよびJavaコマンドを使用して、既存のナビゲーションメニューを完全に上書きします。 なお、 1234 は、ナビゲーションメニューのIDに置き換えてください。

ナビゲーションメニューを削除する

以下のcURLおよびJavaコマンドで既存のナビゲーションメニューを削除します。 なお、 1234 は、ナビゲーションメニューのIDに置き換えてください。