カテゴリーとボキャブラリAPIの基本
LiferayのREST APIは、Liferayのカテゴリーとボキャブラリ機能のためのサービスを提供します。 APIを使用してボキャブラリを作成および編集できます。 カテゴリーをAPIに関連付けて編集することもできます。 まずは、新しいボキャブラリを追加する例を見てみましょう。
ボキャブラリの追加
新しいLiferay DXPインスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 。
メールアドレス test@liferay.com とパスワード test を使用して、http://localhost:8080でLiferayにサインインしてください。 プロンプトが表示されたら、パスワードを learn に変更します。
次に、以下の手順を実行します。
-
Categories and Vocabulary API Basics をダウンロードして解凍します。
curl https://resources.learn.liferay.com/dxp/latest/en/content-authoring-and-management/tags-and-categories/developer-guide/liferay-f5w3.zip -O
unzip liferay-f5w3.zip
-
サイトのIDを検索します 。 これは、以下のさまざまなサービス呼び出しで使用します。
-
cURLスクリプトを使用して、サイトに新しいボキャブラリを追加します。 コマンドラインで、
curl
フォルダに移動します。 サイトIDをパラメーターとして使用して、TaxonomyVocabulary_POST_ToSite.sh
スクリプトを実行します。./TaxonomyVocabulary_POST_ToSite.sh 1234
JSON応答では、新しいボキャブラリが追加されたことを示しています。
{ "availableLanguages" : [ "en-US" ], "creator" : { "additionalName" : "", "contentType" : "UserAccount", "familyName" : "Test", "givenName" : "Test", "id" : 20129, "name" : "Test Test", "profileURL" : "/web/test" }, "dateCreated" : "2021-09-09T21:03:15Z", "dateModified" : "2021-09-09T21:03:15Z", "description" : "Foo", "id" : 40126, "name" : "Able", "numberOfTaxonomyCategories" : 0, "siteId" : 20125 }
-
[Administration Menu] → [カテゴリー設定] → [カテゴリー] に移動して、カテゴリーアプリケーションに移動します。 新しいボキャブラリが追加されたことを確認してください。
-
RESTサービスは、Javaクライアントを使って呼び出すこともできます。
curl
フォルダから、java
フォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。javac -classpath .:* *.java
-
以下のコマンドを使用して
TaxonomyVocabulary_POST_ToSite
クラスを実行します。siteId
値をサイトのIDに置き換えます。java -classpath .:* -DsiteId=1234 TaxonomyVocabulary_POST_ToSite
cURLコマンドの検証
TaxonomyVocabulary_POST_ToSite.sh
スクリプトは、cURLコマンドを使用してRESTサービスを呼び出します。
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies" \
--data-raw '
{
"description": "Foo",
"name": "Able"
}' \
--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}/taxonomy-vocabularies" | RESTサービスのエンドポイント |
-d "{\"description\": \"Foo\", \"name\": \"Able\"}" | お客様が掲載を希望するデータ |
-u "test@liferay.com:learn" | 基本的な認証情報 |
ここでは、デモのために基本的な認証を使用しています。 本番環境の場合は、OAuth2経由でユーザーを認証する必要があります。 OAuth2を使用したReactアプリケーションのサンプルは、OAuth2によるユーザーの認証をご覧ください。
他のcURLコマンドも同様のJSON引数を使用します。
Javaクラスを調べる
TaxonomyVocabulary_POST_ToSite.java
クラスは、ボキャブラリ関連サービスを呼び出すことによってボキャブラリを追加します。
public static void main(String[] args) throws Exception {
TaxonomyVocabularyResource.Builder builder =
TaxonomyVocabularyResource.builder();
TaxonomyVocabularyResource taxonomyVocabularyResource =
builder.authentication(
"test@liferay.com", "learn"
).build();
TaxonomyVocabulary taxonomyVocabulary =
taxonomyVocabularyResource.postSiteTaxonomyVocabulary(
Long.valueOf(System.getProperty("siteId")),
new TaxonomyVocabulary() {
{
description = "Foo";
name = "Baker";
}
});
System.out.println(taxonomyVocabulary);
}
このクラスは、次の3行のコードのみを使用してRESTサービスを呼び出します。
行(省略形) | 説明 |
---|---|
TaxonomyVocabularyResource.Builder builder = ... | Builder を取得し、TaxonomyVocabularyResource サービスインスタンスを生成します。 |
TaxonomyVocabularyResource taxonomyVocabularyResource = builder.authentication(...).build(); | 基本認証を指定し、TaxonomyVocabularyResource サービスインスタンスを生成します。 |
TaxonomyVocabulary taxonomyVocabulary = taxonomyVocabularyResource.postSiteTaxonomyVocabulary(...); | postSiteTaxonomyVocabulary メソッドを呼び出し、投稿するデータを渡します。 |
プロジェクトには、依存関係としてcom.liferay.headless.admin.taxonomy.client.jar
ファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/api
でインストール先のAPIエクスプローラーで確認できます。
main
メソッドのコメントでは、クラスの実行を実演しています。
他の例のJavaクラスはこれと類似していますが、異なるTaxonomyVocabularyResource
メソッドを呼び出します。
サービスの詳細は、 TaxonomyVocabularyResource を参照してください。
以下は、cURLとJavaを使って、他のTaxonomyVocabulary
RESTサービスを呼び出す例です。
サイトからボキャブラリを取得する
次のcURLまたはJavaコマンドを実行すると、サイトのボキャブラリを一覧表示できます。 上記のように、1234
をサイトのIDに置き換えてください。
TaxonomyVocabularies_GET_FromSite.sh
コマンド:
./TaxonomyVocabularies_GET_FromSite.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies" \
--user "test@liferay.com:learn"
TaxonomyVocabularies_GET_FromSite.java
コマンド:
java -classpath .:* -DsiteId=1234 TaxonomyVocabularies_GET_FromSite
コード:
public static void main(String[] args) throws Exception {
TaxonomyVocabularyResource.Builder builder =
TaxonomyVocabularyResource.builder();
TaxonomyVocabularyResource taxonomyVocabularyResource =
builder.authentication(
"test@liferay.com", "learn"
).build();
Page<TaxonomyVocabulary> page =
taxonomyVocabularyResource.getSiteTaxonomyVocabulariesPage(
Long.valueOf(System.getProperty("siteId")), null, null,
Pagination.of(1, 2), null);
System.out.println(page);
}
サイトのTaxonomyVocabulary
オブジェクトがJSONに一覧表示されます。
ボキャブラリの取得
次のcURLまたはJavaコマンドを使用して、特定のボキャブラリを取得します。 1234
をボキャブラリのIDに置き換えてください。
TaxonomyVocabularies_GET_FromSite.[java|sh]
を使用してVocabulary
IDを取得します。
TaxonomyVocabulary_GET_ById.sh
コマンド:
./TaxonomyVocabulary_GET_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
--user "test@liferay.com:learn"
TaxonomyVocabulary_GET_ById.java
コマンド:
java -classpath .:* -DtaxonomyVocabularyId=1234 TaxonomyVocabulary_GET_ById
コード:
public static void main(String[] args) throws Exception {
TaxonomyVocabularyResource.Builder builder =
TaxonomyVocabularyResource.builder();
TaxonomyVocabularyResource taxonomyVocabularyResource =
builder.authentication(
"test@liferay.com", "learn"
).build();
System.out.println(
taxonomyVocabularyResource.getTaxonomyVocabulary(
Long.valueOf(System.getProperty("taxonomyVocabularyId"))));
}
TaxonomyVocabulary
フィールドがJSONに一覧表示されます。
ボキャブラリにパッチを適用する
次のcURLおよびJavaコマンドを使用して、既存のボキャブラリを部分的に編集します。 注: 1234
をボキャブラリのIDに置き換えてください。
TaxonomyVocabulary_PATCH_ById.sh
コマンド:
./TaxonomyVocabulary_PATCH_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
--data-raw '
{
"description": "Bar",
"name": "Able"
}' \
--header "Content-Type: application/json" \
--request "PATCH" \
--user "test@liferay.com:learn"
TaxonomyVocabulary_PATCH_ById.java
コマンド:
java -classpath .:* -DtaxonomyVocabularyId=1234 TaxonomyVocabulary_PATCH_ById
コード:
public static void main(String[] args) throws Exception {
TaxonomyVocabularyResource.Builder builder =
TaxonomyVocabularyResource.builder();
TaxonomyVocabularyResource taxonomyVocabularyResource =
builder.authentication(
"test@liferay.com", "learn"
).build();
TaxonomyVocabulary taxonomyVocabulary =
taxonomyVocabularyResource.patchTaxonomyVocabulary(
Long.valueOf(System.getProperty("taxonomyVocabularyId")),
new TaxonomyVocabulary() {
{
description = "Bar";
name = "Baker";
}
});
System.out.println(taxonomyVocabulary);
}
この例では、説明がFooからBarに変更されています。
ボキャブラリの配置
次のcURLおよびJavaコマンドを使用して、既存のボキャブラリを上書きします。 注: 1234
をボキャブラリのIDに置き換えてください。
TaxonomyVocabulary_PUT_ById.sh
コマンド:
./TaxonomyVocabulary_PUT_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
--data-raw '
{
"description": "Goo",
"name": "Able"
}' \
--header "Content-Type: application/json" \
--request "PUT" \
--user "test@liferay.com:learn"
TaxonomyVocabulary_PUT_ById.java
コマンド:
java -classpath .:* -DtaxonomyVocabularyId=1234 TaxonomyVocabulary_PUT_ById
コード:
public static void main(String[] args) throws Exception {
TaxonomyVocabularyResource.Builder builder =
TaxonomyVocabularyResource.builder();
TaxonomyVocabularyResource taxonomyVocabularyResource =
builder.authentication(
"test@liferay.com", "learn"
).build();
TaxonomyVocabulary taxonomyVocabulary =
taxonomyVocabularyResource.putTaxonomyVocabulary(
Long.valueOf(System.getProperty("taxonomyVocabularyId")),
new TaxonomyVocabulary() {
{
description = "Goo";
name = "Baker";
}
});
System.out.println(taxonomyVocabulary);
}
ボキャブラリの削除
次のcURLおよびJavaコマンドを使用して、既存のボキャブラリを削除します。 注: 1234
をボキャブラリのIDに置き換えてください。
TaxonomyVocabulary_DELETE_ById.sh
コマンド:
./TaxonomyVocabulary_DELETE_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
--request "DELETE" \
--user "test@liferay.com:learn"
TaxonomyVocabulary_DELETE_ById.java
コマンド
java -classpath .:* -DtaxonomyVocabularyId=1234 TaxonomyVocabulary_DELETE_ById
コード:
public static void main(String[] args) throws Exception {
TaxonomyVocabularyResource.Builder builder =
TaxonomyVocabularyResource.builder();
TaxonomyVocabularyResource taxonomyVocabularyResource =
builder.authentication(
"test@liferay.com", "learn"
).build();
taxonomyVocabularyResource.deleteTaxonomyVocabulary(
Long.valueOf(System.getProperty("taxonomyVocabularyId")));
}
タクソノミーカテゴリーサービス
タクソノミーカテゴリーのcURLコマンドとJavaクラスは、タクソノミーボキャブラリと同様に機能します。 一部のサービスではタクソノミーのボキャブラリIDが必要であることに注意してください。
ファイル | 説明 |
---|---|
TaxonomyCategories_GET_FromTaxonomyVocabulary.[java\|sh] | ボキャブラリからカテゴリーの一覧を取得します。 |
TaxonomyCategory_DELETE_ById.[java\|sh] | カテゴリーを削除します。 |
TaxonomyCategory_GET_ById[java\|sh] | IDで特定のカテゴリーを取得します。 |
TaxonomyCategory_PATCH_ById.[java\|sh] | カテゴリーにパッチを適用します。 |
TaxonomyCategory_POST_ToTaxonomyVocabulary.[java\|sh] | カテゴリーをボキャブラリに投稿します。 |
TaxonomyCategory_PUT_ById.[java\|sh] | カテゴリーを配置します。 |
API Explorerには、TaxonomyVocabulary
およびTaxonomyCategory
のすべてのサービスとスキーマが一覧表示され、各サービスを試すためのインターフェイスがあります。