oo

ブログAPIの基本

LiferayのREST APIは、ブログの投稿や画像を追加、変更、削除するためのサービスを提供します。

まずは、新しいブログ投稿を追加する例を見てみましょう。

ブログ投稿の追加

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

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.112-ga112。

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

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

  1. Blog API Basics をダウンロードして解凍します。

    curl https://resources.learn.liferay.com/dxp/latest/en/content-authoring-and-management/blogs/developer-guide/liferay-r3g4.zip -O
    
    unzip liferay-r3g4.zip
    
  2. サイトのIDを検索します 。 これは、以下のさまざまなサービス呼び出しで使用します。

  3. cURLスクリプトを使用して、サイトに新しいブログ投稿を追加します。 コマンドラインで、curlフォルダに移動します。 サイトIDをパラメーターとして使用して、BlogPosting_POST_ToSite.shスクリプトを実行します。

    ./BlogPosting_POST_ToSite.sh 1234
    

    JSON応答では、新しいブログ投稿が追加されたことを示しています。

    {
      "alternativeHeadline": "",
      "articleBody": "Foo",
      "creator": {
        "additionalName": "",
        "contentType": "UserAccount",
        "familyName": "Test",
        "givenName": "Test",
        "id": 20125,
        "name": "Test Test"
      },
      "customFields": [],
      "dateCreated": "2021-07-21T21:26:55Z",
      "dateModified": "2021-07-21T21:26:55Z",
      "datePublished": "2021-07-21T21:26:00Z",
      "description": "",
      "encodingFormat": "text/html",
      "friendlyUrlPath": "able",
      "headline": "Able",
      "id": 38511,
      "keywords": [],
      "numberOfComments": 0,
      "relatedContents": [],
      "siteId": 20121,
      "taxonomyCategoryBriefs": []
    }
    
  4. Administration Menu] → [Content & Data] → [ブログ] に移動して、ブログアプリケーションに移動します。 新しいブログ投稿が追加されたことを確認してください。

    新しいブログ投稿が追加されたことを確認してください。

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

    javac -classpath .:* *.java
    
  6. BlogPosting_POST_ToSiteクラスを実行します。 siteId値をサイトのIDに置き換えます。

    java -classpath .:* -DsiteId=1234 BlogPosting_POST_ToSite
    

cURLコマンドの検証

BlogPosting_POST_ToSite.shスクリプトは、cURLコマンドを使用してRESTサービスを呼び出します。

curl \
	"http://localhost:8080/o/headless-delivery/v1.0/sites/${1}/blog-postings" \
	--data-raw '
		{
			"articleBody": "Foo",
			"headline": "Able"
		}' \
	--header "Content-Type: application/json" \
	--request "POST" \
	--user "test@liferay.com:learn"

ここでは、コマンドの引数を紹介します。

引数 説明
-H "Content-Type: application/json" リクエストボディのフォーマットがJSONであることを示します。
-X POST 指定されたエンドポイントで起動するHTTPメソッド
"http://localhost:8080/o/headless-delivery/v1.0/sites/${1}/blog-postings" RESTサービスのエンドポイント
-d "{\"articleBody\": \"Foo\", \"headline\": \"Able\"}" お客様が掲載を希望するデータ
-u "test@liferay.com:learn" 基本的な認証情報
note

ここでは、デモのために基本的な認証を使用しています。 本番環境の場合は、OAuth2経由でユーザーを認証する必要があります。 OAuth2を使用したReactアプリケーションのサンプルは、OAuth2によるユーザーの認証をご覧ください。

他のcURLコマンドも同様のJSON引数を使用しています。

Javaクラスを調べる

BlogPosting_POST_ToSite.javaクラスは、ブログ投稿関連サービスを呼び出すことにより、ブログ投稿を追加します。

public static void main(String[] args) throws Exception {
	BlogPostingResource.Builder builder = BlogPostingResource.builder();

	BlogPostingResource blogPostingResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	BlogPosting blogPosting = blogPostingResource.postSiteBlogPosting(
		Long.valueOf(System.getProperty("siteId")),
		new BlogPosting() {
			{
				articleBody = "Foo";
				headline = "Baker";
			}
		});

	System.out.println(blogPosting);
}

このクラスは、次の3行のコードのみを使用してRESTサービスを呼び出します。

行(省略形) 説明
BlogPostingResource.Builder builder = ... Builderを取得し、BlogPostingResourceサービスインスタンスを生成します。
BlogPostingResource blogPostingResource = builder.authentication(...).build(); 基本認証を指定し、BlogPostingResourceサービスインスタンスを生成します。
BlogPosting blogPosting = blogPostingResource.postSiteBlogPosting(...); BlogPostingResource.postSiteBlogPostingメソッドを呼び出し、データを投稿に渡します。

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

note

mainメソッドのコメントでは、クラスの実行を実演しています。

他の例のJavaクラスはこれと類似していますが、異なるBlogPostingResourceメソッドを呼び出します。

important

サービスの詳細は、 BlogPostingResource を参照してください。

以下は、cURLとJavaを使って、他のBlogPosting RESTサービスを呼び出す例です。

サイトからブログ投稿を取得する

次のcURLまたはJavaコマンドを実行すると、サイトのブログ投稿を一覧表示できます。 上記のように、1234をサイトのIDに置き換えてください。

BlogPostings_GET_FromSite.sh

コマンド:

./BlogPostings_GET_FromSite.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-delivery/v1.0/sites/${1}/blog-postings" \
	--user "test@liferay.com:learn"

BlogPostings_GET_FromSite.java

コマンド:

java -classpath .:* -DsiteId=1234 BlogPostings_GET_FromSite

コード:

public static void main(String[] args) throws Exception {
	BlogPostingResource.Builder builder = BlogPostingResource.builder();

	BlogPostingResource blogPostingResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	Page<BlogPosting> page = blogPostingResource.getSiteBlogPostingsPage(
		Long.valueOf(System.getProperty("siteId")), null, null, null,
		Pagination.of(1, 2), null);

	System.out.println(page);
}

サイトのBlogPostingオブジェクトがJSONに一覧表示されます。

ブログ投稿を取得する

次のcURLまたはJavaコマンドを使用して、特定のブログ投稿を取得します。 1234をブログ投稿のIDに置き換えてください。

tip

BlogPosting のIDを取得するには BlogPostings_GET_FromSite.[java|sh] を使ってください。

BlogPosting_GET_ById.sh

コマンド:

./BlogPosting_GET_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-delivery/v1.0/blog-postings/${1}" \
	--user "test@liferay.com:learn"

BlogPosting_GET_ById.java

コマンド:

java -classpath .:* -DblogPostingId=1234 BlogPosting_GET_ById

コード:

public static void main(String[] args) throws Exception {
	BlogPostingResource.Builder builder = BlogPostingResource.builder();

	BlogPostingResource blogPostingResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	System.out.println(
		blogPostingResource.getBlogPosting(
			Long.valueOf(System.getProperty("blogPostingId"))));
}

BlogPostingフィールドがJSONに一覧表示されます。

ブログ投稿にパッチを適用する

次のcURLおよびJavaコマンドを使用して、既存のブログ投稿を部分的に編集します。 注: 1234をブログ投稿のIDに置き換えてください。

BlogPosting_PATCH_ById.sh

コマンド:

./BlogPosting_PATCH_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-delivery/v1.0/blog-postings/${1}" \
	--data-raw '
		{
			"articleBody": "Bar"
		}' \
	--header "Content-Type: application/json" \
	--request "PATCH" \
	--user "test@liferay.com:learn"

BlogPosting_PATCH_ById.java

コマンド:

java -classpath .:* -DblogPostingId=1234 BlogPosting_PATCH_ById

コード:

public static void main(String[] args) throws Exception {
	BlogPostingResource.Builder builder = BlogPostingResource.builder();

	BlogPostingResource blogPostingResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	BlogPosting blogPosting = blogPostingResource.patchBlogPosting(
		Long.valueOf(System.getProperty("blogPostingId")),
		new BlogPosting() {
			{
				articleBody = "Bar";
			}
		});

	System.out.println(blogPosting);
}

この例では、記事の本文の内容がFooからBarに変更されています。

ブログ投稿をする

次のcURLおよびJavaコマンドを使用して、既存のブログ投稿を完全に上書きします。 注: 1234をブログ投稿のIDに置き換えてください。

BlogPosting_PUT_ById.sh

コマンド:

./BlogPosting_PUT_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-delivery/v1.0/blog-postings/${1}" \
	--data-raw '
		{
			"articleBody": "Goo",
			"headline": "Able"
		}' \
	--header "Content-Type: application/json" \
	--request "PUT" \
	--user "test@liferay.com:learn"

BlogPosting_PUT_ById.java

コマンド:

java -classpath .:* -DblogPostingId=1234 BlogPosting_PUT_ById

コード:

public static void main(String[] args) throws Exception {
	BlogPostingResource.Builder builder = BlogPostingResource.builder();

	BlogPostingResource blogPostingResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	BlogPosting blogPosting = blogPostingResource.putBlogPosting(
		Long.valueOf(System.getProperty("blogPostingId")),
		new BlogPosting() {
			{
				articleBody = "Goo";
				headline = "Baker";
			}
		});

	System.out.println(blogPosting);
}

ブログ投稿を削除する

次のcURLおよびJavaコマンドを使用して、既存のブログ投稿を削除します。 注: 1234をブログ投稿のIDに置き換えてください。

BlogPosting_DELETE_ById.sh

コマンド:

./BlogPosting_DELETE_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-delivery/v1.0/blog-postings/${1}" \
	--request "DELETE" \
	--user "test@liferay.com:learn"

BlogPosting_DELETE_ById.java

コマンド

java -classpath .:* -DblogPostingId=1234 BlogPosting_DELETE_ById

コード:

public static void main(String[] args) throws Exception {
	BlogPostingResource.Builder builder = BlogPostingResource.builder();

	BlogPostingResource blogPostingResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	blogPostingResource.deleteBlogPosting(
		Long.valueOf(System.getProperty("blogPostingId")));
}

ブログ投稿画像サービス

ブログ画像のcURLコマンドとJavaクラスは、ブログ投稿と同じように機能します。

ファイル 説明
BlogPostingImage_DELETE_ById.[java\|sh] ID別にブログ投稿画像を削除します。
BlogPostingImage_GET_ById.[java\|sh] ID別に特定のブログ投稿画像を取得します。
BlogPostingImage_POST_ToSite.[java\|sh] ブログ投稿画像をサイトに投稿します。
BlogPostingImages_GET_FromSite.[java\|sh] サイトからブログ投稿画像のリストを取得します。

APIエクスプローラーには、BlogPostingおよびBlogPostingImageのすべてのサービスとスキーマが一覧表示され、各サービスを試すためのインターフェースがあります。