ナビゲーションメニューAPIの基本
LiferayのREST APIは、Liferayのナビゲーションメニューにサービスを提供します。 APIを使用してナビゲーションメニューを作成および編集できます。 まずは、新しいナビゲーションメニューを追加する例を見てみましょう。
ナビゲーションメニューの追加
新しいLiferay DXPインスタンスを起動し、以下を実行します。
メールアドレス test@liferay.com とパスワード test を使用して、http://localhost:8080でLiferayにサインインしてください。 プロンプトが表示されたら、パスワードを learn に変更します。
次に、以下の手順を実行します。
-
Categories and Vocabulary API Basics をダウンロードして解凍します。
-
サイトのIDを検索します 。 これは、以下のさまざまなサービス呼び出しで使用します。
-
cURLスクリプトを使用して、サイトに新しいナビゲーションメニューを追加します。 コマンドラインで、
curl
フォルダに移動します。 サイトIDをパラメーターとして使用して、NavigationMenu_POST_ToSite.sh
スクリプトを実行します。JSONのレスポンスには、新しいナビゲーションメニューが追加されたことが示されています。
-
[Administration Menu] → [サイトビルダー] → [Navigation Menus] に移動して、ナビゲーションメニューアプリケーションに移動します。 新しいナビゲーションメニューが追加されたことを確認してください。
-
RESTサービスは、Javaクライアントを使って呼び出すこともできます。
curl
フォルダから、java
フォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。 -
以下のコマンドを使用して
NavigationMenu_POST_ToSite
クラスを実行します。siteId
値をサイトのIDに置き換えます。
cURLコマンドの検証
NavigationMenu_POST_ToSite.sh
スクリプトは、cURLコマンドを使用してRESTサービスを呼び出します。
コマンドの引数は次のとおりです。
引数 | 説明 |
---|---|
-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経由でユーザーを認証する必要があります。 OAuth2を使用したReactアプリケーションのサンプルは、OAuth2によるユーザーの認証をご覧ください。
他のcURLコマンドも同様のJSON引数を使用します。
Javaクラスを調べる
NavigationMenu_POST_ToSite.java
クラスは、ナビゲーションメニュー関連サービスを呼び出すことによってナビゲーションメニューを追加します。
このクラスは、次の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に置き換えてください。
NavigationMenus_GET_FromSite.sh
コマンド:
コード:
NavigationMenus_GET_FromSite.java
コマンド:
コード:
サイトのNavigationMenu
オブジェクトがJSONに一覧表示されます。
ナビゲーションメニューを取得する
以下のcURLまたはJavaコマンドで特定のナビゲーションメニューを取得します。 1234
をナビゲーションメニューのIDに置き換えてください。
NavigationMenus_GET_FromSite.[java|sh]
を使用して、NavigationMenu
IDを取得します。
NavigationMenu_GET_ById.sh
コマンド:
コード:
NavigationMenu_GET_ById.java
コマンド:
コード:
NavigationMenu
フィールドがJSONに一覧表示されます。
ナビゲーションメニューを配置する
次のcURLおよびJavaコマンドを使用して、既存のナビゲーションメニューを完全に上書きします。 なお、 1234
は、ナビゲーションメニューのIDに置き換えてください。
NavigationMenu_PUT_ById.sh
コマンド:
コード:
NavigationMenu_PUT_ById.java
コマンド:
コード:
ナビゲーションメニューを削除する
以下のcURLおよびJavaコマンドで既存のナビゲーションメニューを削除します。 なお、 1234
は、ナビゲーションメニューのIDに置き換えてください。
NavigationMenu_DELETE_ById.sh
コマンド:
コード:
NavigationMenu_DELETE_ById.java
コマンド
コード:
APIエクスプローラーには、NavigationMenu
のすべてのサービスとスキーマが一覧表示され、各サービスを試すためのインターフェイスがあります。