Documentation

ブログAPIの基本

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

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

ブログ投稿の追加

新しいLiferayインスタンスを実行します。

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.22-ga22

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

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

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

    curl https://learn.liferay.com/dxp/latest/ja/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メソッドを呼び出し、データを投稿に渡します。

注釈

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に置き換えてください。

ちなみに

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

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]`

`BlogPostingImage_GET_ById.[java

sh]`

`BlogPostingImage_POST_ToSite.[java

sh]`

`BlogPostingImages_GET_FromSite.[java

sh]`

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