Content Management APIs
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

掲示板APIの基本

Liferay の Headless Delivery アプリケーションは、 メッセージ ボード アプリケーションに REST サービスを提供します。 これらのサービスでは、掲示板カテゴリやスレッド、メッセージの追加、情報の一覧表示、内容の修正や完全な削除が可能です。 cURL コマンドや Java クラスなどのメソッドを使用してこれらのサービスにアクセスします。

メッセージボードのカテゴリは、Liferay バックエンドでは セクション という名前が付けられています。 これらのセクションでは、スレッドを整理するためのトピックを定義します。

メッセージボードリソースの準備

チュートリアルを進める前に、クリーンな Liferay Docker コンテナをセットアップし、提供されているチュートリアル コードを準備して使用してください。

Liferay Dockerコンテナ

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

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.132-ga132

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

開始したら、サイトIDを取得します。 サイト ID を見つけるには、 サイト メニュー (Site Menu) を開き、 構成サイト設定サイト構成に移動します。

サイト構成設定でサイト ID を見つけます。

チュートリアルコード

以下はヘッドレス API をデモンストレーションするサンプル コードです。 本コードには、サンプルのcURLとJavaファイルの両方が含まれています。

次のコマンドを実行して、 サンプルコードをダウンロードして解凍します。

curl https://resources.learn.liferay.com/examples/liferay-y3a6.zip -O
unzip liferay-y3a6.zip

cURL スクリプトはすぐに使用できる状態で提供されますが、実行する前に Java ソース ファイルを手動でコンパイルする必要があります。 これを行うには、プロジェクトのjavaフォルダに移動し、javacコマンドを実行します。

cd liferay-y3a6/java
javac -classpath .:* *.java

プロジェクトには、依存関係としてcom.liferay.headless.delivery.client.jarファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/apiでインストール先のAPIエクスプローラーで確認できます。

提供されるコードには、 MessageBoardSectionMessageBoardThreadMessageBoardMessage サービス用のAPIが含まれています。 含まれているすべてのサンプル API のリストについては、 チュートリアル コード リファレンス を参照してください。

重要

提供されるコードは、デモのために基本認証を使用しています。 本番環境では、 OAuth2を使用してユーザーを認証する必要があります。

メッセージボードAPIの呼び出し

この演習では、cURL コマンドまたは Java クラスを使用して、 MessageBoardSection, MessageBoardThread and MessageBoardMessage の API を呼び出すことができます。 次の出力例はcURLコマンドに対応しており、提供されているJavaクラスの出力とは少し異なります。

  1. liferay-y3a6 プロジェクトの curl または java フォルダに移動します。

    cURLの場合:

    cd liferay-y3a6/curl
    

    Javaの場合:

    cd liferay-y3a6/java
    
  2. サイト ID をパラメータとして使用して、 MessageBoardSections_POST_ToSite を実行します。 これにより、指定したサイトに新しい掲示板セクションが作成されます。

    cURLの場合:

    ./MessageBoardSections_POST_ToSite.sh {site-id}
    

    Javaの場合:

    java -classpath .:* -DsiteId={site-id} MessageBoardSections_POST_ToSite
    

    端末には、新しく作成されたセクションの完全なスキーマが表示されます。 提供されるAPI呼び出しは、新しいセクションの descriptionname フィールドのみを定義します。

  3. セクションのIDをコピーして、以下のGET、PATCH、PUT、DELETEメソッドで使用します。

    {
       ...
       "description" : "Foo",
       "id" : 43925,
       ...
       "name" : "Able Section",
       ...
    }
    
  4. パラメータにサイトIDを使用して、MessageBoardSections_GET_FromSiteを実行します。 これにより、指定したサイト内のすべてのセクションのリストが返されます。

    cURLの場合:

    ./MessageBoardSections_GET_FromSite.sh {site-id}
    

    Javaの場合:

    java -classpath .:* -DsiteId={site-id} MessageBoardSections_GET_FromSite
    
  5. メッセージ ボード セクションの ID をパラメータとして使用して、 MessageBoardSections_PATCH_ById を実行します。 これにより、指定されたエントリーの詳細がAPI呼び出しで提供された詳細に更新されます。

    cURLの場合:

    ./MessageBoardSections_PATCH_ById.sh {message-board-section-id}
    

    Javaの場合:

    java -classpath .:* -DmessageBoardSectionId={message-board-section-id} MessageBoardSections_PATCH_ById
    

    これにより、 description フィールドが Barに更新されます。

  6. パラメータに同じセクション ID を使用して、 MessageBoardSections_PUT_ById を実行します。 これにより、指定されたエントリーの詳細がAPI呼び出しで提供された詳細に置き換えられます。

    cURLの場合:

    ./MessageBoardSections_PUT_ById.sh {message-board-section-id}
    

    Javaの場合:

    java -classpath .:* -DmessageBoardSectionId={message-board-section-id} MessageBoardSections_PUT_ById
    

    これにより、 name フィールドが Baker Section に、 description フィールドが Gooに更新されます。

  7. パラメータにサイト ID を使用して、 MessageBoardThreads_POST_ToSite を実行します。 これにより、サイトの新しい掲示板スレッドが作成されます。

    cURLの場合:

    ./MessageBoardThreads_POST_ToSite.sh {site-id}
    

    Javaの場合:

    java -classpath .:* -DsiteId={site-id} MessageBoardThreads_POST_ToSite
    
    {
       ...
       "articleBody" : "Foo",
       ...
       "headline" : "Able Thread",
       "id" : 43942,
       ...
       "messageBoardRootMessageId" : 43941,
    }
    

    すべてのスレッドは、スレッド内のすべての直接返信の親メッセージとして機能するルートメッセージ(つまり、messageBoardRootMessageId)で作成されます。

  8. 上記のセクション ID をパラメータとして使用して、 MessageBoardThreads_POST_ToSection を実行します。 これにより、指定されたセクションの新しい掲示板スレッドが作成されます。

    cURLの場合:

    ./MessageBoardThreads_POST_ToSection.sh {message-board-section-id}
    

    Javaの場合:

    java -classpath .:* -DmessageBoardSectionId={message-board-section-id} MessageBoardThreads_POST_ToSection
    
  9. このスレッドのIDをコピーして、以下のGET、PATCH、PUTメソッドで使用します。

    {
       ...
       "articleBody" : "Foo",
       ...
       "headline" : "Baker Thread",
       "id" : 43934,
       ...
       "messageBoardRootMessageId" : 43933,
       "messageBoardSectionId" : 43925,
       ...
    }
    
  10. スレッドの ID をパラメータとして使用して、 MessageBoardThreads_PATCH_ById を実行します。 これにより、指定されたスレッドの詳細がAPI呼び出しで提供された詳細に更新されます。

    cURLの場合:

    ./MessageBoardThreads_PATCH_ById.sh {message-board-thread-id}
    

    Javaの場合:

    java -classpath .:* -DmessageBoardThreadId={message-board-thread-id} MessageBoardThreads_PATCH_ById
    

    これにより、 articleBody フィールドが Barに更新されます。

  11. パラメータに同じスレッド ID を使用して、 MessageBoardThreads_PUT_ById を実行します。 これにより、指定されたスレッドの詳細がAPI呼び出しで提供された詳細に置き換えられます。

    cURLの場合:

    ./MessageBoardThreads_PUT_ById.sh {message-board-thread-id}
    

    Javaの場合:

    java -classpath .:* -DmessageBoardThreadId={message-board-thread-id} MessageBoardThreads_PUT_ById
    

    これにより、 headline フィールドが Charlie Thread に、 articleBody フィールドが Gooに更新されます。

  12. パラメーターにサイトIDを使用して、MessageBoardThreads_GET_FromSiteを実行します。 これにより、セクションを持たないすべてのサイトスレッドのリストが返されます。

    cURLの場合:

    ./MessageBoardThreads_GET_FromSite.sh {site-id}
    

    Javaの場合:

    java -classpath .:* -DsiteId={site-id} MessageBoardThreads_GET_FromSite
    
  13. パラメーターにセクションIDを使用して、MessageBoardThreads_GET_FromSectionを実行します。 これにより、指定したセクション内のすべてのスレッドのリストが返されます。

    cURLの場合:

    ./MessageBoardThreads_GET_FromSection.sh {message-board-section-id}
    

    Javaの場合:

    java -classpath .:* -DmessageBoardSectionId={message-board-section-id} MessageBoardThreads_GET_FromSection
    
  14. 上記のいずれかのスレッド ID をパラメータとして使用して、 MessageBoardMessages_POST_ToThread を実行します。 これにより、指定されたスレッドの新しい掲示板のメッセージが作成されます。

    cURLの場合:

    ./MessageBoardMessages_POST_ToThread.sh {message-board-thread-id}
    

    Javaの場合:

    java -classpath .:* -DmessageBoardThreadId={message-board-thread-id} MessageBoardMessages_POST_ToThread
    
  15. メッセージのIDをコピーして、以下のPUT、PATCH、POSTコマンドで使用します。

    {
       ...
       "articleBody" : "Foo",
       ...
       "headline" : "Able Message",
       "id" : 43946,
       ...
       "messageBoardSectionId" : 43925,
       "messageBoardThreadId" : 43934,
       "parentMessageBoardMessageId" : 43933,
       ...
    }
    

    新しいメッセージは、スレッドのルートメッセージ(messageBoardRootMessageId)の子として作成されます。

  16. パラメータにメッセージのIDを使用して、 MessageBoardMessages_PATCH_ById を実行します。 これにより、指定されたメッセージの詳細がAPI呼び出しで提供された詳細に更新されます。

    cURLの場合:

    ./MessageBoardMessages_PATCH_ById.sh {message-board-message-id}
    

    Javaの場合:

    java -classpath .:* -DmessageBoardMessageId={message-board-message-id} MessageBoardMessages_PATCH_ById
    

    これにより、 articleBody フィールドが Barに更新されます。

  17. パラメータに同じメッセージ ID を使用して、 MessageBoardMessages_PUT_ById を実行します。 これにより、指定されたメッセージの詳細がAPI呼び出しで提供された詳細に置き換えられます。

    cURLの場合:

    ./MessageBoardMessages_PUT_ById.sh {message-board-message-id}
    

    Javaの場合:

    java -classpath .:* -DmessageBoardMessageId={message-board-message-id} MessageBoardMessages_PUT_ById
    

    これにより、 headline フィールドが Baker Message に、 articleBody フィールドが Gooに更新されます。

  18. 前述のメッセージ ID をパラメータとして使用して、 MessageBoardMessages_POST_ToParent を実行します。 これにより、指定したメッセージの子メッセージが作成されます。

    cURLの場合:

    ./MessageBoardMessages_POST_ToParent.sh {parent-message-board-message-id}
    

    Javaの場合:

    java -classpath .:* -DparentMessageBoardMessageId={parent-message-board-message-id} MessageBoardMessages_POST_ToParent
    
    {
       ...
       "articleBody" : "Foo",
       ...
       "headline" : "Charlie Message",
       "id" : 43949,
       ...
       "messageBoardSectionId" : 43925,
       "messageBoardThreadId" : 43934,
       ...
       "parentMessageBoardMessageId" : 43946,
       ...
    }
    
  19. パラメータにスレッドIDを使用して、MessageBoardMessages_GET_FromThreadを実行します。 これにより、スレッドのルートメッセージ(すなわち、 messageBoardRootMessage)に対する子メッセージのリストが返されます。

    cURLの場合:

    ./MessageBoardMessages_GET_FromThread.sh {message-board-thread-id}
    

    Javaの場合:

    java -classpath .:* -DmessageBoardThreadId={message-board-thread-id} MessageBoardMessages_GET_FromThread
    

    出力には、スレッドで作成した最初のメッセージのデータが含まれ、そのメッセージ自体に1つの子メッセージが含まれている必要があります。 これは、メッセージの numberOfMessageBoardMessages フィールドで示されます。

  20. パラメーターに直前のメッセージのIDを使用して、MessageBoardMessages_GET_FromParentを実行します。 これにより、指定したメッセージの子メッセージのすべてのリストが返されます。

    cURLの場合:

    ./MessageBoardMessages_GET_FromParent.sh {parent-message-board-message-id}
    

    Javaの場合:

    java -classpath .:* -DparentMessageBoardMessageId={parent-message-board-message-id} MessageBoardMessages_GET_FromParent
    

    出力には、最後に作成した子メッセージのデータも含まれるはずです。

  21. パラメータに同じセクション ID を使用して、 MessageBoardSections_DELETE_ById を実行します。 これにより、指定されたセクションが、そのスレッドやメッセージとともに削除されます。

    cURLの場合:

    ./MessageBoardSections_DELETE_ById.sh {message-board-section-id}
    

    Javaの場合:

    java -classpath .:* -DmessageBoardSectionId={message-board-section-id} MessageBoardSections_DELETE_ById
    
  22. パラメータに同じセクション ID を使用して、 MessageBoardSections_GET_ById を実行します。 これにより、指定されたセクションが存在する場合はその詳細が返されます。

    cURLの場合:

    ./MessageBoardSections_GET_ById.sh {message-board-section-id}
    

    Javaの場合:

    java -classpath .:* -DmessageBoardSectionId={message-board-section-id} MessageBoardSections_GET_ById
    

    前のステップでセクションを削除したため、次のメッセージが返されます。

    {
       "status" : "NOT_FOUND",
       "title" : "No MessageBoardSection exists with the primary key 43925"
    }
    

コード参照

提供されるサンプルコードには、以下の MessageBoardSectionMessageBoardThreadMessageBoardMessage の API の cURL スクリプトと Java クラスが含まれています。

MessageBoardSectionのサンプルAPI

サンプルコードには、次のAPIを呼び出すcURLスクリプトとJavaクラスが含まれています。

サービスHTTP メソッドHTTPエンドポイント説明
MessageBoardSectionPOST/v1.0/sites/[siteId]/message-board-sectionsAPI呼び出しで提供された詳細を使用して、新規カテゴリーを作成します
MessageBoardSectionGET/v1.0/sites/[siteId]/message-board-sections指定されたサイト内のすべてのカテゴリーの完全なリストを返します。結果に対して、ページ分割、絞り込み、検索、およびソートをすることができます
MessageBoardSectionPATCH/v1.0/message-board-sections/[messageBoardSectionId]カテゴリのAPI呼び出しで指定されたフィールドのみを更新します
MessageBoardSectionPUT/v1.0/message-board-sections/[messageBoardSectionId]指定されたカテゴリのすべてのフィールドを、API呼び出しで提供されたフィールドに置き換えます。
MessageBoardSectionDELETE/v1.0/message-board-sections/[messageBoardSectionId]指定されたカテゴリーを削除し、操作が成功した場合は204を返します

MessageBoardThreadのサンプルAPI

サービスHTTP メソッドHTTPエンドポイント説明
MessageBoardThreadPOST/v1.0/sites/[siteId]/message-board-threadsAPI呼び出しで提供された詳細を使用して、新規スレッドを作成します
MessageBoardThreadPOST/v1.0/message-board-sections/[messageBoardSectionId]/message-board-threadsAPI呼び出しで提供された詳細を使用して、指定されたカテゴリ内に新規スレッドを作成します。
MessageBoardThreadGET/v1.0/sites/[siteId]/message-board-threadsカテゴリに属さないすべてのサイトスレッドの完全なリストを返します。結果はページ分割、絞り込み、検索、ソートが可能です。
MessageBoardThreadGET/v1.0/message-board-sections/[messageBoardSectionId]/message-board-threads指定されたカテゴリ内のすべてのスレッドの完全なリストを返します。結果に対して、ページ分割、絞り込み、検索、およびソートをすることができます
MessageBoardThreadPATCH/v1.0/message-board-threads/[messageBoardThreadId]スレッドのAPI呼び出しで指定されたフィールドのみを更新します
MessageBoardThreadPUT/v1.0/message-board-threads/[messageBoardThreadId]指定されたスレッドのすべてのフィールドを、API呼び出しで提供されたフィールドに置き換えます
MessageBoardThreadDELETE/v1.0/message-board-threads/[messageBoardThreadId]指定されたスレッドを削除し、操作が成功した場合は204を返します

MessageBoardMessageのサンプルAPI

サービスHTTP メソッドHTTPエンドポイント説明
MessageBoardMessagePOST/v1.0/message-board-threads/[messageBoardThreadId]/message-board-messagesAPI呼び出しで提供された詳細を使用して、指定されたスレッドに新規メッセージを作成します。
MessageBoardMessageGET/v1.0/message-board-threads/[messageBoardThreadId]/message-board-messages指定されたスレッド内のすべてのメッセージの完全なリストを返します。結果に対して、ページ分割、絞り込み、検索、およびソートをすることができます
MessageBoardMessagePATCH/v1.0/message-board-messages/[messageBoardMessageId]メッセージのAPI呼び出しで指定されたフィールドのみを更新します
MessageBoardMessagePUT/v1.0/message-board-messages/[messageBoardMessageId]指定されたメッセージのすべてのフィールドを、APIコールで提供されたフィールドに置き換えます
MessageBoardMessageDELETE/v1.0/message-board-messages/[messageBoardMessageId]指定されたメッセージを削除し、操作が成功した場合は204を返します