タグAPIの基本
LiferayのREST APIは、Liferay DXP/ポータルのタグにサービスを提供します。 APIを使用してタグを作成および編集できます。 まずは、新しいタグを追加する例を見てみましょう。 Liferayのコードベースでは、タグはキーワードと呼ばれることに注意してください。
タグの追加
新しいLiferay DXPインスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:7.4.13-u55。
メールアドレス[email protected]_とパスワード_test_を使用して、http://localhost:8080でLiferayにサインインしてください。 プロンプトが表示されたら、パスワードを _learn_に変更します。
次に、以下の手順を実行します。
Tags API Basics をダウンロードし、解凍してください。
curl https://resources.learn.liferay.com/dxp/latest/ja/content-authoring-and-management/tags-and-categories/developer-guide/liferay-r7u9.zip -O
unzip liferay-r7u9.zip
サイトのIDを検索します 。 これは、以下のさまざまなサービス呼び出しで使用します。
cURLスクリプトを使用して、サイトに新しいタグを追加します。 コマンドラインで、
curl
フォルダに移動します。 サイトIDをパラメーターとして使用して、Keyword_POST_ToSite.sh
スクリプトを実行します。./Keyword_POST_ToSite.sh 1234
JSON応答では、新しいタグが追加されたことを示しています。
"creator" : { "additionalName" : "", "contentType" : "UserAccount", "familyName" : "Test", "givenName" : "Test", "id" : 20129, "name" : "Test Test", "profileURL" : "/web/test" }, "dateCreated" : "2021-09-09T21:15:46Z", "dateModified" : "2021-09-09T21:15:46Z", "id" : 40130, "keywordUsageCount" : 0, "name" : "foo", "siteId" : 20125
[Administration Menu] → [カテゴリー設定] → [Tags] に移動して、タグアプリケーションに移動します。 新しいタグが追加されたことを確認してください。
RESTサービスは、Javaクライアントを使って呼び出すこともできます。
curl
フォルダから、java
フォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。javac -classpath .:* *.java
以下のコマンドを使用して
Keyword_POST_ToSite
クラスを実行します。siteId
値をサイトのIDに置き換えます。java -classpath .:* -DsiteId=1234 Keyword_POST_ToSite
cURLコマンドの検証
Keyword_POST_ToSite.sh
スクリプトは、cURLコマンドを使用してRESTサービスを呼び出します。
curl \
-H "Content-Type: application/json" \
-X POST \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/keywords" \
-d "{\"name\": \"Foo\"}" \
-u "[email protected]:learn"
コマンドの引数は次のとおりです。
引数 | 説明 |
---|---|
-H "Content-Type: application/json" |
リクエストボディのフォーマットがJSONであることを示します。 |
-X POST |
指定されたエンドポイントで起動するHTTPメソッド |
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/keywords" |
RESTサービスのエンドポイント |
-d "{\"name\": \"Foo\"}" |
お客様が掲載を希望するデータ |
-u "[email protected]:learn" |
基本的な認証情報 |
ここでは、デモのためにベーシック認証を使用しています。 本番環境の場合は、OAuth2経由でユーザーを認証する必要があります。 OAuth2を使ったReactアプリケーションのサンプルは、OAuth2を使ってユーザーを認証する をご覧ください。
他のcURLコマンドも同様のJSON引数を使用します。
Javaクラスを調べる
Keyword_POST_ToSite.java
クラスは、キーワード関連サービスを呼び出すことにより、タグを追加します。
public static void main(String[] args) throws Exception {
KeywordResource.Builder builder = KeywordResource.builder();
KeywordResource keywordResource = builder.authentication(
"[email protected]", "learn"
).build();
Keyword keyword = keywordResource.postSiteKeyword(
Long.valueOf(System.getProperty("siteId")),
new Keyword() {
{
name = "Foo";
}
});
System.out.println(keyword);
}
このクラスは、次の3行のコードのみを使用してRESTサービスを呼び出します。
行(省略形) | 説明 |
---|---|
KeywordResource.Builder builder = ... |
Builder を取得し、KeywordResource サービスインスタンスを生成します。 |
KeywordResource keywordResource = builder.authentication(...).build(); |
基本認証を指定し、KeywordResource サービスインスタンスを生成します。 |
Keyword keyword = keywordResource.postSiteKeyword(...); |
keywordResource.postSiteKeyword メソッドを呼び出し、投稿するデータを渡します。 |
プロジェクトには、依存関係としてcom.liferay.headless.admin.taxonomy.client.jar
ファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/api
でインストール先のAPIエクスプローラーで確認できます。
main
メソッドのコメントでは、クラスの実行を実演しています。
他の例のJavaクラスはこれと類似していますが、異なるKeywordResource
メソッドを呼び出します。
サービスの詳細は、 KeywordResource を参照してください。
以下は、cURLとJavaを使って、他のKeyword
RESTサービスを呼び出す例です。
サイトからキーワード投稿を取得する
次のcURLまたはJavaコマンドを実行すると、サイトのタグを一覧表示できます。 上記のように、1234
をサイトのIDに置き換えてください。
Keywords_GET_FromSite.sh
コマンド:
./Keywords_GET_FromSite.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/keywords" \
-u "[email protected]:learn"
Keywords_GET_FromSite.java
コマンド:
java -classpath .:* -DsiteId=1234 Keywords_GET_FromSite
コード:
public static void main(String[] args) throws Exception {
KeywordResource.Builder builder = KeywordResource.builder();
KeywordResource keywordResource = builder.authentication(
"[email protected]", "learn"
).build();
Page<Keyword> page = keywordResource.getSiteKeywordsPage(
Long.valueOf(System.getProperty("siteId")), null, null,
Pagination.of(1, 2), null);
System.out.println(page);
}
サイトのKeyword
オブジェクトがJSONに一覧表示されます。
キーワードの取得
次のcURLまたはJavaコマンドを使用して、特定のタグを取得します。 1234
をタグのIDに置き換えてください。
Keywords_GET_FromSite.[java|sh]
を使用して、サイトの Keyword
IDを取得します。
Keyword_GET_ById.sh
コマンド:
./Keyword_GET_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/keywords/${1}" \
-u "[email protected]:learn"
Keyword_GET_ById.java
コマンド:
java -classpath .:* -DkeywordId=1234 Keyword_GET_ById
コード:
public static void main(String[] args) throws Exception {
KeywordResource.Builder builder = KeywordResource.builder();
KeywordResource keywordResource = builder.authentication(
"[email protected]", "learn"
).build();
System.out.println(
keywordResource.getKeyword(
Long.valueOf(System.getProperty("keywordId"))));
}
Keyword
フィールドがJSONに一覧表示されます。
キーワードの配置
次のcURLおよびJavaコマンドを使用して、既存のタグを完全に上書きします。 注: 1234
をタグのIDに置き換えてください。
Keyword_PUT_ById.sh
コマンド:
./Keyword_PUT_ById.sh 1234
コード:
curl \
-H "Content-Type: application/json" \
-X PUT \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/keywords/${1}" \
-d "{\"name\": \"Bar\"}" \
-u "[email protected]:learn"
Keyword_PUT_ById.java
コマンド:
java -classpath .:* -DkeywordId=1234 Keyword_PUT_ById
コード:
public static void main(String[] args) throws Exception {
KeywordResource.Builder builder = KeywordResource.builder();
KeywordResource keywordResource = builder.authentication(
"[email protected]", "learn"
).build();
Keyword keyword = keywordResource.putKeyword(
Long.valueOf(System.getProperty("keywordId")),
new Keyword() {
{
name = "Bar";
}
});
System.out.println(keyword);
}
キーワードの削除
次のcURLおよびJavaコマンドを使用して、既存のタグを削除します。 注: 1234
をタグのIDに置き換えてください。
Keyword_DELETE_ById.sh
コマンド:
./Keyword_DELETE_ById.sh 1234
コード:
curl \
-X DELETE \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/keywords/${1}" \
-u "[email protected]:learn"
Keyword_DELETE_ById.java
コマンド
java -classpath .:* -DkeywordId=1234 Keyword_DELETE_ById
コード:
public static void main(String[] args) throws Exception {
KeywordResource.Builder builder = KeywordResource.builder();
KeywordResource keywordResource = builder.authentication(
"[email protected]", "learn"
).build();
keywordResource.deleteKeyword(
Long.valueOf(System.getProperty("keywordId")));
}
API Explorerには、Keyword
のすべてのサービスとスキーマが一覧表示され、各サービスを試すためのインターフェイスがあります。