掲示板APIの基本
LiferayのHeadless Deliveryアプリケーションは、 掲示板 アプリケーションにRESTサービスを提供します。 これらのサービスでは、掲示板カテゴリやスレッド、メッセージの追加、情報の一覧表示、内容の修正や完全な削除が可能です。 ここでは、cURLコマンドとJavaクラスを使用してこれらのサービスを呼び出します。
掲示板カテゴリは、Liferayのバックエンドではsectionsという名前になっています。 これらのセクションでは、スレッドを整理するためのトピックを定義します。
チュートリアルリソースの準備
チュートリアルに進む前に、まずクリーンなLiferay Dockerコンテナをセットアップし、提供されたチュートリアルコードを使用できるように準備します。
Liferay Dockerコンテナ
新しいLiferay インスタンスを起動し、以下を実行します。
http://localhost:8080でLiferayへのサインインします。 メールアドレス test@liferay.com とパスワード test を使用してください。 プロンプトが表示されたら、パスワードを learn に変更します。
開始したら、サイトIDを取得します。 サイトIDを見つけるには、 サイトメニュー()を開き、 [Configuration] → [Site Settings] → [Site Configuration] に移動します。
チュートリアルコード
以下はヘッドレスAPIをデモするサンプルコードです。 本コードには、サンプルのcURLとJavaファイルの両方が含まれています。
次のコマンドを実行して、 サンプルコード をダウンロードして解凍します。
cURLスクリプトを使用する準備ができたら、実行する前にJavaソースファイルを手動でコンパイルする必要があります。 これを行うには、プロジェクトの java
フォルダーに行き、javac
コマンドを実行する。
このプロジェクトには com.liferay.headless.delivery.client.jar
ファイルが依存関係として含まれていることに注意してください。 すべての REST アプリケーションのクライアント JAR 依存情報は、インストー ルの API エクスプローラーの /o/api
にある。
提供されるコードには MessageBoardSection
、MessageBoardThread
、MessageBoardMessage
サービスの API が含まれる。 含まれているサンプルAPIの一覧は、 Tutorial Code Reference をご参照ください。
提供されるコードは、デモのために基本認証を使用しています。 本番環境では、 OAuth2 でユーザーを認証する必要があります。
サンプルAPIの呼び出し
この練習では、cURLコマンドかJavaクラスを使ってMessageBoardSection
、MessageBoardThread
、MessageBoardMessage
の各APIを呼び出すことができる。 次の出力例はcURLコマンドに対応しており、提供されているJavaクラスの出力とは少し異なります。
-
liferay-y3a6
プロジェクトのcurl
またはjava
フォルダに移動します。cURLの場合
Javaの場合
-
サイトIDをパラメータとして
MessageBoardSection_POST_ToSite
を実行する。 これにより、指定したサイトに新しい掲示板セクションが作成されます。cURLの場合
Javaの場合
端末には、新しく作成されたセクションの完全なスキーマが表示されます。 提供されるAPIコールは、新しいセクションの
description
フィールドとname
フィールドを定義するだけである。 -
セクションのIDをコピーして、以下のGET、PATCH、PUT、DELETEメソッドで使用します。
-
パラメータにサイト ID を使用して
MessageBoardSections_GET_FromSite
を実行する。 これにより、指定したサイト内のすべてのセクションのリストが返されます。cURLの場合
Javaの場合
-
メッセージボードセクションのIDをパラメータとして
MessageBoardSection_PATCH_ById
を実行する。 これにより、指定されたエントリーの詳細がAPI呼び出しで提供された詳細に更新されます。cURLの場合
Javaの場合
これは
description
フィールドをBar
に更新する。 -
同じセクションIDをパラメータとして
MessageBoardSection_PUT_ById
を実行する。 これにより、指定されたエントリーの詳細がAPI呼び出しで提供された詳細に置き換えられます。cURLの場合
Javaの場合
これは
name
フィールドをBaker Section
に、description
フィールドをGoo
に更新します。 -
パラメータにサイト ID を使用して
MessageBoardThread_POST_ToSite
を実行する。 これにより、サイトの新しい掲示板スレッドが作成されます。cURLの場合
Javaの場合
すべてのスレッドは、スレッド内のすべての直接返信の親メッセージとなるルートメッ セージ(つまり
messageBoardRootMessageId
)で作成される。 -
上記のセクションIDをパラメータとして
MessageBoardThread_POST_ToSection
を実行する。 これにより、指定されたセクションの新しい掲示板スレッドが作成されます。cURLの場合
Javaの場合
-
このスレッドのIDをコピーして、以下のGET、PATCH、PUTメソッドで使用します。
-
スレッドの ID をパラメータとして
MessageBoardThread_PATCH_ById
を実行する。 これにより、指定されたスレッドの詳細がAPI呼び出しで提供された詳細に更新されます。cURLの場合
Javaの場合
これは
articleBody
フィールドをBar
に更新する。 -
同じスレッド ID をパラメータとして
MessageBoardThread_PUT_ById
を実行する。 これにより、指定されたスレッドの詳細がAPI呼び出しで提供された詳細に置き換えられます。cURLの場合
Javaの場合
これにより、
headline
フィールドがCharlie Thread
に、articleBody
フィールドがGoo
に更新される。 -
パラメータにサイト ID を使用して
MessageBoardThreads_GET_FromSite
を実行する。 これにより、セクションを持たないすべてのサイトスレッドのリストが返されます。cURLの場合
Javaの場合
-
セクション ID をパラメータとして
MessageBoardThreads_GET_FromSection
を実行する。 これにより、指定したセクション内のすべてのスレッドのリストが返されます。cURLの場合
Javaの場合
-
上記のいずれかのスレッド ID をパラメータとして
MessageBoardMessage_POST_ToThread
を実行する。 これにより、指定されたスレッドの新しい掲示板のメッセージが作成されます。cURLの場合
Javaの場合
-
メッセージのIDをコピーして、以下のPUT、PATCH、POSTコマンドで使用します。
新しいメッセージはスレッドのルートメッセージ(
messageBoardRootMessageId
)の子メッセージとして作成されます。 -
メッセージの ID をパラメータとして
MessageBoardMessage_PATCH_ById
を実行する。 これにより、指定されたメッセージの詳細がAPI呼び出しで提供された詳細に更新されます。cURLの場合
Javaの場合
これは
articleBody
フィールドをBar
に更新する。 -
同じメッセージ ID をパラメータとして
MessageBoardMessage_PUT_ById
を実行する。 これにより、指定されたメッセージの詳細がAPI呼び出しで提供された詳細に置き換えられます。cURLの場合
Javaの場合
これにより、
headline
フィールドがBaker Message
に、articleBody
フィールドがGoo
に更新される。 -
直前のメッセージ ID をパラメータとして
MessageBoardMessage_POST_ToParent
を実行する。 これにより、指定したメッセージの子メッセージが作成されます。cURLの場合
Javaの場合
-
スレッド ID をパラメータとして
MessageBoardMessages_GET_FromThread
を実行する。 これはスレッドのルートメッセージ(つまりmessageBoardRootMessage
)の子メッセージのリストを返します。cURLの場合
Javaの場合
出力には、スレッドで作成した最初のメッセージのデータが含まれ、そのメッセージ自体に1つの子メッセージが含まれている必要があります。 これはメッセージの
numberOfMessageBoardMessages
フィールドで示される。 -
直前のメッセージの ID をパラメータとして
MessageBoardMessages_GET_FromParent
を実行する。 これにより、指定したメッセージの子メッセージのすべてのリストが返されます。cURLの場合
Javaの場合
出力には、最後に作成した子メッセージのデータも含まれるはずです。
-
同じセクションIDをパラメータとして
MessageBoardSection_DELETE_ById
を実行する。 これにより、指定されたセクションが、そのスレッドやメッセージとともに削除されます。cURLの場合
Javaの場合
-
同じセクション ID をパラメータとして
MessageBoardSection_GET_ById
を実行する。指定したセクションが存在すれば、その詳細を返します。cURLの場合
Javaの場合
前のステップでセクションを削除したため、次のメッセージが返されます。
コード参照
提供されているサンプルコードには、以下の MessageBoardSection
、MessageBoardThread
、MessageBoardMessage
API 用の cURL スクリプトと Java クラスが含まれている。
MessageBoardSectionのサンプルAPI
サンプルコードには、次のAPIを呼び出すcURLスクリプトとJavaクラスが含まれています。
サービス | HTTP メソッド | HTTPエンドポイント | 説明 |
---|---|---|---|
MessageBoardSection | POST | /v1.0/sites/[siteId]/message-board-sections | API呼び出しで提供された詳細を使用して、新規カテゴリーを作成します |
MessageBoardSection | GET | /v1.0/sites/[siteId]/message-board-sections | 指定されたサイト内のすべてのカテゴリーの完全なリストを返します。結果に対して、ページ分割、絞り込み、検索、およびソートをすることができます |
MessageBoardSection | PATCH | /v1.0/message-board-sections/[messageBoardSectionId] | カテゴリのAPI呼び出しで指定されたフィールドのみを更新します |
MessageBoardSection | PUT | /v1.0/message-board-sections/[messageBoardSectionId] | 指定されたカテゴリのすべてのフィールドを、API呼び出しで提供されたフィールドに置き換えます。 |
MessageBoardSection | DELETE | /v1.0/message-board-sections/[messageBoardSectionId] | 指定されたスレッドを削除し、操作が成功した場合は204を返す |
MessageBoardThreadのサンプルAPI
サービス | HTTP メソッド | HTTPエンドポイント | 説明 |
---|---|---|---|
MessageBoardThread | POST | /v1.0/sites/[siteId]/message-board-threads | API呼び出しで提供された詳細を使用して、新規スレッドを作成します |
MessageBoardThread | POST | /v1.0/message-board-sections/[messageBoardSectionId]/message-board-threads | API呼び出しで提供された詳細を使用して、指定されたカテゴリ内に新規スレッドを作成します。 |
MessageBoardThread | GET | /v1.0/sites/[siteId]/message-board-threads | カテゴリに属さないすべてのサイトスレッドの完全なリストを返します。結果はページ分割、絞り込み、検索、ソートが可能です。 |
MessageBoardThread | GET | /v1.0/message-board-sections/[messageBoardSectionId]/message-board-threads | 指定されたカテゴリ内のすべてのスレッドの完全なリストを返します。結果に対して、ページ分割、絞り込み、検索、およびソートをすることができます |
MessageBoardThread | PATCH | /v1.0/message-board-threads/[messageBoardThreadId] | スレッドのAPI呼び出しで指定されたフィールドのみを更新します |
MessageBoardThread | PUT | /v1.0/message-board-threads/[messageBoardThreadId] | 指定されたスレッドのすべてのフィールドを、API呼び出しで提供されたフィールドに置き換えます |
MessageBoardThread | DELETE | /v1.0/message-board-threads/[messageBoardThreadId] | 指定されたスレッドを削除し、操作が成功した場合は204を返す |
MessageBoardMessageのサンプルAPI
サービス | HTTP メソッド | HTTPエンドポイント | 説明 |
---|---|---|---|
MessageBoardMessage | POST | /v1.0/message-board-threads/[messageBoardThreadId]/message-board-messages | API呼び出しで提供された詳細を使用して、指定されたスレッドに新規メッセージを作成します。 |
MessageBoardMessage | GET | /v1.0/message-board-threads/[messageBoardThreadId]/message-board-messages | 指定されたスレッド内のすべてのメッセージの完全なリストを返します。結果に対して、ページ分割、絞り込み、検索、およびソートをすることができます |
MessageBoardMessage | PATCH | /v1.0/message-board-messages/[messageBoardMessageId] | メッセージのAPI呼び出しで指定されたフィールドのみを更新します |
MessageBoardMessage | PUT | /v1.0/message-board-messages/[messageBoardMessageId] | 指定されたメッセージのすべてのフィールドを、APIコールで提供されたフィールドに置き換えます |
MessageBoardMessage | DELETE | /v1.0/message-board-messages/[messageBoardMessageId] | 指定されたメッセージを削除し、成功すれば204を返す |
サンプルのcURLスクリプトの検証
以下は、チュートリアルのcURLコマンドの代表的な例です。
MessageBoardSection_POST_ToSite.sh
MessageBoardSection_PUT_ById.sh
MessageBoardSections_GET_FromSite.sh
MessageBoardSection_DELETE_ById.sh
MessageBoardThread_POST_ToSection.sh
MessageBoardMessage_POST_ToThread.sh
MessageBoardMessage_POST_ToParent.sh
サンプルのJavaクラスの検証
以下は、チュートリアルのJavaコマンドの代表的な例です。