Documentation

ブログAPIの基本

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

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

ブログ投稿の追加

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

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.29-ga29。

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

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

  1. ブログAPIの基本をダウンロードし、解凍します。

    curl https://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 \
	-H "Content-Type: application/json" \
	-X POST \
	"http://localhost:8080/o/headless-delivery/v1.0/sites/${1}/blog-postings" \
	-d "{\"articleBody\": \"Foo\", \"headline\": \"Able\"}" \
	-u "[email protected]: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経由でユーザーを認証する必要があります。

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

Javaクラスを調べる

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

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

	BlogPostingResource blogPostingResource = builder.authentication(
		"[email protected]", "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エクスプローラーで確認できます。

注釈

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

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

重要

サービスの詳細は、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" \
	-u "[email protected]: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(
		"[email protected]", "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に置き換えてください。

ちなみに

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}" \
	-u "[email protected]: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(
		"[email protected]", "learn"
	).build();

	BlogPosting blogPosting = blogPostingResource.getBlogPosting(
		Long.valueOf(System.getProperty("blogPostingId")));

	System.out.println(blogPosting);
}

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

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

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

BlogPosting_PATCH_ById.sh

コマンド:

./BlogPosting_PATCH_ById.sh 1234

コード:

curl \
	-H "Content-Type: application/json" \
	-X PATCH \
	"http://localhost:8080/o/headless-delivery/v1.0/blog-postings/${1}" \
	-d "{\"articleBody\": \"Bar\"}" \
	-u "[email protected]: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(
		"[email protected]", "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 \
	-H "Content-Type: application/json" \
	-X PUT \
	"http://localhost:8080/o/headless-delivery/v1.0/blog-postings/${1}" \
	-d "{\"articleBody\": \"Goo\", \"headline\": \"Able\"}" \
	-u "[email protected]: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(
		"[email protected]", "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 \
	-X DELETE \
	"http://localhost:8080/o/headless-delivery/v1.0/blog-postings/${1}" \
	-u "[email protected]: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(
		"[email protected]", "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のすべてのサービスとスキーマが一覧表示され、各サービスを試すためのインターフェースがあります。