タグAPIの基本
LiferayのREST APIは、タグ(Liferayのコードベースではキーワードと呼ばれる)を管理するためのサービスを提供します。 APIを使用して、タグの作成、編集、削除を行うことができます。 まずは、新しいタグを追加する例から始めましょう。
タグを追加
新しいLiferay DXPインスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:2025.q1.6-lts
http://localhost:8080 に、メールアドレス test@liferay.com とパスワード test を使用して Liferay にサインインします。 プロンプトが表示されたら、パスワードを learnに変更します。
次に、以下の手順に従います。
-
タグ API の基本 をダウンロードして解凍します。
curl https://resources.learn.liferay.com/examples/liferay-r7u9.zip -Ounzip liferay-r7u9.zip -
サイトID を見つけて、次のサービス呼び出しで使用してください。
-
cURLスクリプトを使用して、サイトに新しいタグを追加します。 コマンドラインで、
curlフォルダに移動します。 サイトIDをパラメータとして指定して、Keywords_POST_ToSites.shスクリプトを実行します。./Keywords_POST_ToSites.sh 1234JSON応答では、新しいタグが追加されたことを示しています。
{ "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 } -
タグ アプリケーションに移動するには、 管理メニュー → 分類 → タグ に移動します。 新しいタグが追加されたことを確認してください。

-
RESTサービスは、Javaクライアントを使って呼び出すこともできます。
curlフォルダから、javaフォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。javac -classpath .:* *.java -
以下のコマンドで
Keywords_POST_ToSitesクラスを実行します。siteIdの値を、ご自身のサイト ID に置き換えてください。java -classpath .:* -DsiteId=1234 Keywords_POST_ToSites
cURLコマンドの検証
Keywords_POST_ToSites.sh スクリプトは、cURL コマンドを使用して REST サービスを呼び出します。
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/keywords" \
--data-raw '
{
"name": "Foo"
}' \
--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-admin-taxonomy/v1.0/sites/${1}/keywords" | RESTサービスのエンドポイント |
-d "{\"name\": \"Foo\"}" | お客様が掲載を希望するデータ |
-u "test@liferay.com:learn" | 基本的な認証情報 |
ここでは、デモのために基本的な認証を使用しています。 本番環境では、 OAuth2 を介してユーザーを認証する必要があります。 OAuth2 を使用する React アプリケーションの例については、 OAuth2 を使用してユーザーを認証する を参照してください。
他のcURLコマンドも同様のJSON引数を使用しています。
Javaクラスを調べる
Keywords_POST_ToSites.java クラスは、 KeywordResource サービスを呼び出すことでタグを追加します。
public static void main(String[] args) throws Exception {
KeywordResource.Builder builder = KeywordResource.builder();
KeywordResource keywordResource = builder.authentication(
"test@liferay.com", "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_FromSites.sh
コマンド:
./Keywords_GET_FromSites.sh 1234
コード:
Keywords_GET_FromSites.java
コマンド:
java -classpath .:* -DsiteId=1234 Keywords_GET_FromSites
コード:
サイトの キーワード オブジェクトは JSON で表示されます。
キーワードの取得
次のcURLまたはJavaコマンドを使用して、特定のタグを取得します。 1234をタグのIDに置き換えてください。
Keywords_GET_FromSites.[java|sh] を使用して、サイト キーワード ID を取得します。
キーワード_GET_ById.sh
コマンド:
./Keywords_GET_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/keywords/${1}" \
--user "test@liferay.com:learn"
Keywords_GET_ById.java
コマンド:
java -classpath .:* -DkeywordId=1234 Keywords_GET_ById
コード:
public static void main(String[] args) throws Exception {
KeywordResource.Builder builder = KeywordResource.builder();
KeywordResource keywordResource = builder.authentication(
"test@liferay.com", "learn"
).build();
System.out.println(
keywordResource.getKeyword(
Long.valueOf(System.getProperty("keywordId"))));
}
キーワード フィールドは JSON に現れます。
キーワードの配置
次のcURLおよびJavaコマンドを使用して、既存のタグを完全に上書きします。 注: 1234をタグのIDに置き換えてください。
Keywords_PUT_ById.sh
コマンド:
./Keywords_PUT_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/keywords/${1}" \
--data-raw '
{
"name": "Bar"
}' \
--header "Content-Type: application/json" \
--request "PUT" \
--user "test@liferay.com:learn"
Keywords_PUT_ById.java
コマンド:
java -classpath .:* -DkeywordId=1234 Keywords_PUT_ById
コード:
public static void main(String[] args) throws Exception {
KeywordResource.Builder builder = KeywordResource.builder();
KeywordResource keywordResource = builder.authentication(
"test@liferay.com", "learn"
).build();
Keyword keyword = keywordResource.putKeyword(
Long.valueOf(System.getProperty("keywordId")),
new Keyword() {
{
name = "Bar";
}
});
System.out.println(keyword);
}
キーワードの削除
次のcURLおよびJavaコマンドを使用して、既存のタグを削除します。 注: 1234をタグのIDに置き換えてください。
キーワード_DELETE_ById.sh
コマンド:
./Keywords_DELETE_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/keywords/${1}" \
--request "DELETE" \
--user "test@liferay.com:learn"
Keywords_DELETE_ById.java
コマンド:
java -classpath .:* -DkeywordId=1234 Keywords_DELETE_ById
コード:
public static void main(String[] args) throws Exception {
KeywordResource.Builder builder = KeywordResource.builder();
KeywordResource keywordResource = builder.authentication(
"test@liferay.com", "learn"
).build();
keywordResource.deleteKeyword(
Long.valueOf(System.getProperty("keywordId")));
}
API Explorer にはすべての キーワード サービスとスキーマが一覧表示され、各サービスを試すためのインターフェースがあります。
バッチエンジンによるタグ管理の改善
Liferay DXP 2025.Q2+
Tags APIは、Liferayインスタンス間でタグを移行するためのバッチエクスポートおよびインポートをサポートしています。 作成日/変更日、名前、その他の属性に基づいてフィルタを適用し、インポートリクエストの時に制作者のデータをどのように処理するかを構成できます。
バッチ エンジンの使用方法の詳細については、 バッチ エンジン API を使用したデータのエクスポート および バッチ エンジン API を使用したデータのインポート を参照してください。
データをフィルタリングする
クエリパラメータを使用して、エクスポートされたデータを絞り込みます。
curl \
"http://localhost:8080/o/headless-batch-engine/v1.0/export-task/com.liferay.headless.admin.taxonomy.dto.v1_0.Keyword/JSON?taskItemDelegateName=Marketing&filter=name%20eq%20%27Marketing%27" \
--header "Content-Type: application/json" \
--request "POST" \
--user "test@liferay.com:learn"
以下に、例におけるクエリパラメータの仕組みを示します。
-
Batch Engine API を使用してエクスポート タスクを開始するには、
http://localhost:8080/o/headless-batch-engine/v1.0/export-task/を使用します。 -
com.liferay.headless.admin.taxonomy.dto.v1_0.Keyword/JSONは、エクスポートするデータの種類(この場合は JSON 形式のタグ)を指定します。キーワードは、タグを表す API 内のクラスを指します。 -
taskItemDelegateName=Marketingエクスポートするタグを指定します。 この例では、値マーケティングは、 マーケティング という名前のタグに対応します。 この値を、エクスポートしたいタグの実際の名前に置き換えてください。 -
filter=name%20eq%20%27Marketing%27エクスポートによって返されるデータを絞り込みます。 フィルタクエリパラメータは、ここで URL エンコードされています (name%20eq%20%27Marketing%27)。 フィルタクエリの同等の人間が読めるバージョンはfilter=name eq 'Marketing'です。 これにより、名前フィールドが「マーケティング」と等しいアイテムのみが表示されるように結果が絞り込まれます。
クリエイターデータの維持
タグをインポートする際は、 importCreatorStrategy クエリ パラメータを使用して、作成者データの処理方法を定義します。 creatorStrategy パラメータは、ターゲットシステムにクリエーターが存在しない場合に何が起こるかを決定します。
以下のパラメータを使用できます。
-
creatorStrategy=INSERT指定された作成者が対象システムに存在しない場合、新しいユーザーを作成者として追加することを保証します。 これは、インポート中に不足している作成者が追加されるようにするために、
importCreatorStrategy=KEEP_CREATORを使用する場合に必要です。 -
importCreatorStrategy=KEEP_CREATORエクスポートされたデータに指定された元の作成者情報を保持します。 ターゲットシステムに作成者が存在しない場合、
creatorStrategy=INSERTも設定されていない限り、インポートは失敗します。 -
importCreatorStrategy=OVERWRITE_CREATOR元の作成者をインポートしたユーザーに置き換えます。 インポートされたすべてのタグは、元の作成者の情報に関係なく、インポートを実行したユーザーに割り当てられます。
importCreatorStrategy が省略された場合、システムはデフォルトで OVERWRITE_CREATOR を使用します。
以下に例を示します。
curl \
"http://localhost:8080/o/headless-batch-engine/v1.0/import-task/com.liferay.headless.admin.taxonomy.dto.v1_0.Keyword?siteId=20110&creatorStrategy=INSERT&importCreatorStrategy=KEEP_CREATOR" \
--data-raw '
{
"name": "Tag"
}' \
--header "Content-Type: application/json" \
--request "POST" \
--user "test@liferay.com:learn"