Documentation

タグAPIの基本

LiferayのREST APIは、Liferay DXP/ポータルのタグにサービスを提供します。 APIを使用してタグを作成および編集できます。 まずは、新しいタグを追加する例を見てみましょう。 Liferayのコードベースでは、タグはキーワードと呼ばれることに注意してください。

タグの追加

  1. Liferay DXPを起動します。 まだDockerコンテナがない場合は、以下を使用します。

    docker run -it -m 8g -p 8080:8080 liferay/dxp:7.4.13-u29
    
  2. タグAPIの基本 をダウンロードして解凍します。

    curl https://learn.liferay.com/dxp/latest/ja/content-authoring-and-management/tags-and-categories/developer-guide/liferay-r7u9.zip -O
    
    unzip liferay-r7u9.zip
    
  3. サイトのIDを検索します 。 これは、以下のさまざまなサービス呼び出しで使用します。

  4. 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
    
  5. Administration Menu] → [カテゴリー設定] → [Tags] に移動して、タグアプリケーションに移動します。 新しいタグが追加されたことを確認してください。

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

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

    javac -classpath .:* *.java
    
  7. 以下のコマンドを使用して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"

ここでは、コマンドの引数を紹介します。

引数

Description

-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:test"

基本的な認証情報

注釈

ここでは、デモのためにベーシック認証を使用しています。 本番環境の場合は、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に置き換えてください。

ちなみに

eywords_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();

	Keyword keyword = keywordResource.getKeyword(
		Long.valueOf(System.getProperty("keywordId")));

	System.out.println(keyword);
}

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