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

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

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

  1. Tags API Basicsをダウンロードして解凍します。

    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 クラスは、キーワード関連のサービスを呼び出してタグを追加します。

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エクスプローラーで確認できます。

メイン メソッドのコメントは、クラスの実行を示しています。

他の例のJavaクラスはこれと類似していますが、異なるKeywordResourceメソッドを呼び出します。

重要

サービスの詳細については、 KeywordResource を参照してください。

以下は、cURLとJavaを使って、他のKeyword RESTサービスを呼び出す例です。

サイトからキーワード投稿を取得する

次の cURL または Java コマンドを実行すると、サイトのタグを一覧表示できます。 上記のように、 1234 をサイト ID に置き換えます。

キーワード_GET_FromSites.sh

コマンド:

./Keywords_GET_FromSites.sh 1234

コード:

キーワード_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"

キーワード_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に置き換えてください。

キーワード_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"

キーワード_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"

キーワード_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 エクスプローラー には、すべての キーワード サービスとスキーマが一覧表示され、各サービスを試すためのインターフェースがあります。

バッチエンジンによるタグ管理の改善

Liferay DXP 2025年第2四半期以降

Tags API は、Liferay インスタンス間でタグを移行するためのバッチエクスポートとインポートをサポートしています。 このプロセスには、作成日や変更日、名前、その他の属性に基づいてユーザーの フィルター を処理し、インポート中に 作成者データを維持する ことが含まれます。

バッチ エンジンの使用の詳細については、「バッチ エンジン 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"

この例では、クエリ パラメータは次のようになります。

  • バッチ エンジン 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 はエクスポートするタグを指定します。 この例では、値 Marketing は、 Marketingという名前のタグに対応します。 この値を、エクスポートするタグの実際の名前に置き換えます。

  • filter=name%20eq%20%27マーケティング%27 は、エクスポートによって返されるデータを絞り込みます。 フィルター クエリ パラメータはここで URL エンコードされます (name%20eq%20%27Marketing%27)。 フィルター クエリの人間が読めるバージョンは filter=name eq 'Marketing'です。 これにより、名前フィールドが “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"