WebコンテンツAPIの基本
Liferay DXP RESTサービスを使用すると、サイトで構造化コンテンツを作成・管理することができます。 構造化コンテンツとは、Webコンテンツストラクチャーを使用するWebコンテンツ です。 ストラクチャーは、Webコンテンツの記事に含まれる作成者、概要、内容などの情報を定義します。 ストラクチャーにより、必要な情報がコンテンツにすべて含まれるようになります。 詳細については、 Webコンテンツストラクチャーを理解するをご覧ください。
構造化コンテンツをレンダリングするために、Webコンテンツテンプレートでストラクチャーを使用できますが、構造化コンテンツの作成にテンプレートは必要ありません。
ストラクチャーや構造化コンテンツのcURLとJavaのサンプルについては以下を参照してください。 構造化コンテンツの管理に関するより詳細な例については、 WebコンテンツAPIの詳細設定を参照してください。 Liferay DXPでのREST APIの使用については、 RESTサービスの使用をご覧ください。
環境のセットアップ
新しいLiferay インスタンスを起動し、以下を実行します。
http://localhost:8080でLiferayへのサインインします。 メールアドレス test@liferay.com とパスワード test を使用してください。 プロンプトが表示されたら、パスワードを learn に変更します。
次に、以下の手順を実行します。
-
Web Content API Basics ファイルをダウンロードし、解凍します:
Noteこれらのスクリプトは基本認証を使用し、テスト用に設計されています。 本番のLiferay DXP環境では、基本認証を使用しないでください。
-
以下の手順で環境をセットアップします。
使用するサービスの特定
Webコンテンツの管理には、Liferay DXP Headless Delivery API で下記のサービスを使用します。
- Webコンテンツ記事用の
StructuredContent
。 - Webコンテンツストラクチャー用の
ContentStructure
。 - Webコンテンツテンプレート用の
ContentTemplate
。
このサービスと利用可能なHTTPメソッドを識別するには、Liferay APIエクスプローラーを使用します。 詳しくは、RESTサービスの使用を参照してください。
サイトIDの特定
サイトIDの特定は、 こちらの の説明に従ってください。
ユーザーインターフェースでの基本Webコンテンツ記事の作成
Webコンテンツを作成するには、Webコンテンツストラクチャーが必要です。 ユーザーインターフェースでストラクチャーを宣言せずにWebコンテンツを作成した場合、Liferay DXPでは、デフォルトの基本Webコンテンツストラクチャーを使用します。
基本Webコンテンツストラクチャーは、Liferay DXPのユーザーインターフェースには表示されません。
これらの例では、単一のテキストフィールドとデフォルトの基本Webコンテンツストラクチャーを持つ基本Webコンテンツ記事を使用しています。 以下の手順で、Webコンテンツを作成します。
-
サイトメニュー(
)を開き、 [Content & Data] → [Web Content] に移動します。
-
[Web Content] タブで、追加 (
)をクリックし、 [Basic Web Content] を選択します。
-
新しいWebコンテンツの名前として Foo を入力し、 [Publish] をクリックします。
詳しくは、 基本Webコンテンツ記事の追加を参照してください。
Webコンテンツ記事のサイトからの取得
次のcURLまたはJavaコマンドを実行すると、サイトのWebコンテンツ記事を取得できます。 1234
をサイトのIDに置き換えてください。
StructuredContents_GET_FromSite.sh
StructuredContents_GET_FromSite.sh
cURLスクリプトは、サイトのすべてのWebコンテンツ記事を一覧表示します。 このスクリプトは、サイトIDを唯一のパラメーターとして、GET
HTTPメソッドでStructuredContent
サービスを使用します。
メソッド | サービス | エンドポイント |
---|---|---|
GET | StructuredContent | /v1.0/sites/{siteID}/structured-contents |
パラメーター # | 説明 |
---|---|
$1 | siteId |
以下は、このスクリプトが生成するJSON出力の一部です。 この出力では、id
とfriendlyUrlPath
のフレンドリーURLによって識別される単一のWebコンテンツ記事が表示されます。 Webコンテンツは、contentStructureId
のストラクチャーを使用します。 ストラクチャーには、contentFields
のcontentFieldValue
セクションで説明される単一のテキストフィールドがあります。 ストラクチャーにさらに多くの要素を含めると、これらの要素を説明するcontentFieldValue
セクションが追加で表示されます。
JSON出力で以下の情報を確認します。
-
出力には、
id: 41539
、title: Foo
、そしてフレンドリーURLfriendlyUrlPath: foo
で識別される単一の Webコンテンツ記事が表示されます。 -
このWebコンテンツは、
contentStructureId
で特定されるデフォルトのLiferay DXP Webコンテンツストラクチャーを使用します。 -
Webコンテンツストラクチャーには、
contentFields
のcontentFieldValue
セクションで説明される単一のテキストフィールドがあります。 ストラクチャーにさらに多くの要素を含めると、これらの要素を説明するcontentFieldValue
セクションが追加で表示されます。 -
ユーザーインターフェースのWebコンテンツIDは、JSON出力の
キー
プロパティに対応します。
StructuredContents_GET_FromSite.java
StructuredContents_GET_FromSite.java
クラスは、構造化コンテンツ関連サービスを呼び出してWebコンテンツの記事一覧を取得します。
このクラスは、わずか3行のコードでRESTサービスを呼び出します。
行(省略形) | 説明 |
---|---|
StructuredContentResource.Builder builder = ... | Builder を取得し、StructuredContentResource サービスインスタンスを生成します。 |
StructuredContentResource structuredContentResource = builder.authentication(...).build(); | 基本認証を指定し、StructuredContentResource サービスインスタンスを生成します。 |
Page<StructuredContent> page = structuredContentResource.getSiteStructuredContentsPage(...); | structuredContentResource.getSiteStructuredContentsPage メソッドを呼び出し、データを取得します。 |
プロジェクトには、依存関係としてcom.liferay.headless.delivery.client.jar
ファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/api
でインストール先のAPIエクスプローラーで確認できます。
main
メソッドのコメントでは、クラスの実行を実演しています。
他の例のJavaクラスはこれと類似していますが、異なるStructuredContentResource
メソッドを呼び出します。
サービスの詳細は、 StructuredContentResource を参照してください。
以下は、cURLとJavaを使って、他のRESTサービスを呼び出す例です。
Webコンテンツ記事の取得
前の手順の スクリプトは、サイトのすべてのWebコンテンツ記事を返します。 特定の記事を取得するには、 StructuredContent_GET_ById.[java|sh]
スクリプトを使用します。 1234
をWebコンテンツ記事のIDに置き換えてください。
StructuredContent_GET_ById.sh
コマンド:
コード:
StructuredContent_GET_ById.java
コマンド:
コード:
StructuredContent
フィールドはJSONで表示されます。
Webコンテンツストラクチャーの取得
次のcURLまたはJavaコマンドを実行すると、サイトのコンテンツストラクチャーを取得できます。 1234
をサイトのIDに置き換えてください。
デフォルトの基本Webコンテンツストラクチャーは、このエンドポイントを使用すると表示されません。
ContentStructures_GET_FromSite.sh
コマンド:
コード:
ContentStructures_GET_FromSite.java
コマンド:
コード:
サイトのContentStructure
オブジェクトは、JSONで表示されます。
IDによるWebコンテンツストラクチャーの取得
サンプルのWebコンテンツ記事にあるデフォルトのWebコンテンツストラクチャーは、Liferay DXPのユーザーインターフェースでは表示されません。 しかし、ContentStructure
サービスを使用すれば、ストラクチャーの説明を収集することができます。
ContentStructure_GET_ById.[java|sh]
スクリプトは、Webコンテンツストラクチャーの説明を返します。
ContentStructure_GET_ById.sh
メソッド | サービス | エンドポイント |
---|---|---|
GET | ContentStructure | /v1.0/content-structures/{contentStructureId} |
パラメーター # | 説明 |
---|---|
$1 | contentStructureId |
以下は、JSON出力です。 Liferay DXPのデフォルトのWebコンテンツストラクチャーは、 id
とname
で識別できます。 contentStructureFields
セクションには、ストラクチャー項目の説明が含まれています。 このストラクチャーには、タイプ string
と名前 content
の単一のコンテンツ項目が含まれていることに注目してください。 基本Webコンテンツの記事の投稿 では、このコンテンツ項目に情報を追加して新規Webコンテンツ記事を作成します。
ContentStructure_GET_ById.java
コマンド:
コード:
ContentStructure
フィールドは、JSONで表示されます。
基本的なWebコンテンツの記事の投稿
StructuredContent_POST_ToSite[java|sh]
スクリプトを使って、新規Webコンテンツ記事を作成します。 1234
をWebコンテンツストラクチャーIDに置き換えてください。 5678
をサイトのIDに置き換えてください。
StructuredContent_POST_ToSite.sh
StructuredContent_POST_ToSite.sh
cURLスクリプトサンプルは、POST
HTTPメソッドとデフォルトのWebコンテンツストラクチャーを使って新規Webコンテンツの記事を作成します。 このスクリプトでは、 サイトID とストラクチャーID
をパラメーターとして使用しています。
メソッド | サービス | エンドポイント |
---|---|---|
PUT | StructuredContent | /v1.0/sites/{siteId}/structured-contents |
cURLスクリプトのパラメーター:
パラメーター # | 説明 |
---|---|
$1 | siteId |
$2 | contentStructureId |
Liferay DXPで新規Webコンテンツの記事を見つけるには、サイトメニュー ()を開いて、 [コンテンツ & データ] → [Webコンテンツ] に移動します。
以下は、このスクリプトが生成するJSON出力の一部です。 このスクリプトは、ストラクチャーcontentField
content
を参照として使用し、シンプルな <p>Foo</p>
HTMLストリングを投稿します。
StructuredContent_POST_ToSite.java
StructuredContent_POST_ToSite.java
クラスは、サービスに関連した構造化コンテンツを呼び出して、Webコンテンツ記事を追加します。
コマンド:
コード:
StructuredContent
フィールドはJSONで表示されます。
Webコンテンツ記事のパッチ適用
StructuredContent
サービスでPATCH
メソッドを使用して、Webコンテンツ記事を更新します。 StructuredContent_PATCH_ById.[java|sh]
スクリプトは構造化コンテンツ識別子 id
を使用して、記事のコンテンツを’Foo’から’Bar’に更新します。
StructuredContent_PATCH_ById.sh
コマンド:
コード:
StructuredContent_PATCH_ById.java
コマンド:
コード:
Webコンテンツ記事の配置
StructuredContent
サービスと共にPUT
HTTPメソッドを使って、オリジナルのWebコンテンツ情報を置き換えることができます。 StructuredContent_PUT_ById.[java|sh]
スクリプトはWebコンテンツやストラクチャー識別子を使用して、記事のコンテンツをBar
からGoo
へ更新します。
StructuredContent_PUT_ById.sh
コマンド:
コード:
StructuredContent_PUT_ById.java
コマンド:
コード:
Webコンテンツ記事の削除
StructuredContent
サービスでDELETE
メソッドを使用して、Webコンテンツ記事を削除します。 StructuredContent_DELETE_ById.java|sh]
スクリプトサンプルでは、Webコンテンツid
を使用してWebコンテンツを削除しています。
REST APIを使用してWebコンテンツを削除すると、Liferay DXPゴミ箱 を使用せずに、永久に削除されます。
StructuredContent_DELETE_ById.sh
コマンド:
コード:
StructuredContent_DELETE_ById.java
コマンド
コード:
その他のWebコンテンツとWebコンテンツフォルダーのサービス
他のcURLコマンドとJavaクラスは、その他の StructuredContent
とStructuredContentFolder
サービスの詳細を示しています。 WebコンテンツAPIの基本 でそれらを確認できます。
ファイル | 説明 |
---|---|
StructuredContentFolder_GET_ById.[java\|sh] | Webコンテンツフォルダーのフィールドを一覧表示します。 |
StructuredContentFolders_GET_FromSite.[java\|sh] | サイト内のすべてのWebコンテンツフォルダーを一覧表示します。 |
StructuredContentFolder_POST_ToSite.[java\|sh] | Webコンテンツフォルダーをサイトに投稿します。 |
StructuredContentFolder_PATCH_ById.[java\|sh] | Webコンテンツフォルダーを更新します。 |
StructuredContentFolder_PUT_ById.[java\|sh] | Webコンテンツフォルダーを置き換えます。 |
StructuredContentFolder_DELETE_ById.[java\|sh] | Webコンテンツフォルダーを削除します。 |
StructuredContent_POST_ToStructuredContentFolder.[java\|sh] | Webコンテンツ記事をフォルダーに投稿します。 |
REST APIを使用してWebコンテンツフォルダーを削除すると、フォルダとそのコンテンツは Liferay DXPゴミ箱 を使わずに永久に削除されます。