ブログAPIの基本
LiferayのREST APIは、ブログの投稿や画像を追加、変更、削除するためのサービスを提供します。
まずは、新しいブログ投稿を追加する例を見てみましょう。
ブログ投稿の追加
新しいLiferay インスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.55-ga55。
http://localhost:8080でLiferayへのサインインします。 メールアドレス[email protected]_とパスワード_test_を使用してください。 プロンプトが表示されたら、パスワードを _learn_に変更します。
次に、以下の手順を実行します。
Blog API Basics をダウンロードし、解凍してください。
curl https://resources.learn.liferay.com/dxp/latest/ja/content-authoring-and-management/blogs/developer-guide/liferay-r3g4.zip -O
unzip liferay-r3g4.zip
サイトのIDを検索します 。 これは、以下のさまざまなサービス呼び出しで使用します。
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" : [ ]
[Administration Menu] → [Content & Data] → [ブログ] に移動して、ブログアプリケーションに移動します。 新しいブログ投稿が追加されたことを確認してください。
RESTサービスは、Javaクラスで呼び出すこともできます。
curl
フォルダから、java
フォルダに移動します。 ソースファイルをコンパイルします。javac -classpath .:* *.java
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 "[email protected]:learn" |
基本的な認証情報 |
ここでは、デモのためにベーシック認証を使用しています。 本番環境の場合は、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(
"[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();
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 \
-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
のすべてのサービスとスキーマが一覧表示され、各サービスを試すためのインターフェースがあります。