Content Management APIs
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

タグ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に変更します。

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

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

    curl https://resources.learn.liferay.com/examples/liferay-r7u9.zip -O
    
    unzip liferay-r7u9.zip
    
  2. サイトID を見つけて、次のサービス呼び出しで使用してください。

  3. cURLスクリプトを使用して、サイトに新しいタグを追加します。 コマンドラインで、curlフォルダに移動します。 サイトIDをパラメータとして指定して、 Keywords_POST_ToSites.sh スクリプトを実行します。

    ./Keywords_POST_ToSites.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
    }
    
  4. タグ アプリケーションに移動するには、 管理メニュー分類タグ に移動します。 新しいタグが追加されたことを確認してください。

    新しいタグが追加されたことを確認してください。

  5. RESTサービスは、Javaクライアントを使って呼び出すこともできます。 curl フォルダから、 java フォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。

    javac -classpath .:* *.java
    
  6. 以下のコマンドで 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"