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

ブログAPIの基本

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

Liferay DXP 2024.Q4+/Portal GA129+ Blogs API は、ブログの投稿や画像を参照するために外部参照コード (ERC) を使用するようになりました。これにより、インスタンス間で一貫した識別が可能になり、コンテンツの管理と移植性を向上させるバッチエクスポート/インポートがサポートされます。

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

ブログ投稿の追加

新しい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に変更します。

次に、以下の手順に従います。

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

    curl https://resources.learn.liferay.com/examples/liferay-r3g4.zip -O
    
    unzip liferay-r3g4.zip
    
  2. サイトのIDを見つけます。 これは以下のさまざまなサービス呼び出しで使用されます。

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

    ./BlogPostings_POST_ToSites.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. 管理メニューコンテンツ & データブログに移動して、ブログ アプリケーションに移動します。 新しいブログ投稿が追加されたことを確認してください。

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

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

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

    java -classpath .:* -DsiteId=1234 BlogPostings_POST_ToSites
    

cURLコマンドの検証

BlogPostings_POST_ToSites.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"基本的な認証情報

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

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

Javaクラスを調べる

BlogPostings_POST_ToSites.java クラスは、ブログ投稿関連サービスを呼び出してブログ投稿を追加します。

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.postSiteBlogPosting(
			Long.valueOf(System.getProperty("siteId")),
			new BlogPosting() {
				{
					articleBody = "Foo";
					headline = "Baker";
				}
			}));
}

このクラスは、わずか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エクスプローラーで確認できます。

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

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

重要

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

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

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

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

BlogPostings_GET_FromSites.sh

コマンド:

./BlogPostings_GET_FromSites.sh 1234

コード:

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

BlogPostings_GET_FromSites.java

コマンド:

java -classpath .:* -DsiteId=1234 BlogPostings_GET_FromSites

コード:

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.getSiteBlogPostingsPage(
			Long.valueOf(System.getProperty("siteId")), null, null, null,
			Pagination.of(1, 2), null));
}

GET メソッドは、サイトの BlogPosting オブジェクトを JSON 形式で返します。

ブログ投稿を取得する

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

ヒント

BlogPostings_GET_FromSites.[java|sh] を使用して BlogPosting ID を取得します。

ブログ投稿_GET_ById.sh

コマンド:

./BlogPostings_GET_ById.sh 1234

コード:

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

BlogPostings_GET_ById.java

コマンド:

java -classpath .:* -DblogPostingId=1234 BlogPostings_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"))));
}

GET メソッドは、 BlogPosting フィールドを JSON 形式で返します。

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

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

ブログ投稿_PATCH_ById.sh

コマンド:

./BlogPostings_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"

BlogPostings_PATCH_ById.java

コマンド:

java -classpath .:* -DblogPostingId=1234 BlogPostings_PATCH_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.patchBlogPosting(
			Long.valueOf(System.getProperty("blogPostingId")),
			new BlogPosting() {
				{
					articleBody = "Bar";
				}
			}));
}

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

ブログ投稿をする

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

ブログ投稿_PUT_ById.sh

コマンド:

./BlogPostings_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"

BlogPostings_PUT_ById.java

コマンド:

java -classpath .:* -DblogPostingId=1234 BlogPostings_PUT_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.putBlogPosting(
			Long.valueOf(System.getProperty("blogPostingId")),
			new BlogPosting() {
				{
					articleBody = "Goo";
					headline = "Baker";
				}
			}));
}

ブログ投稿を削除する

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

ブログ投稿_DELETE_ById.sh

コマンド:

./BlogPostings_DELETE_ById.sh 1234

コード:

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

ブログ投稿_DELETE_ById.java

コマンド

java -classpath .:* -DblogPostingId=1234 BlogPostings_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クラスは、ブログ投稿と同じように機能します。

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

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