ピックリストAPIの基本

ピックリストAPIの基本

ピックリストの作成と管理 アプリケーションメニューから、または REST API を使用して作成することができます。 headless-admin-list-types サービスを呼び出して、ピックリストを作成・管理します。

ピックリストの追加

新しいLiferay DXPインスタンスを起動し、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/dxp:7.4.13-u55。

メールアドレス[email protected]_とパスワード_test_を使用して、http://localhost:8080でLiferayにサインインしてください。 プロンプトが表示されたら、パスワードを _learn_に変更します。

Liferayが起動したら。

  1. Picklists API Basics をダウンロードし、解凍してください。

    curl https://resources.learn.liferay.com/dxp/latest/ja/building-applications/objects/picklists/liferay-v3n6.zip -O
    
    unzip liferay-v3n6.zip
    
  2. cURLスクリプトを使用して、インスタンスに新しいピックリストを追加します。 コマンドラインで、 curl フォルダに移動します。 ListTypeDefinition_POST_ToInstance.sh スクリプトを実行します。

    ./ListTypeDefinition_POST_ToInstance.sh
    

    JSONレスポンスは、新しいピックリストが追加されたことを示しています。

    "dateCreated" : "2022-11-17T18:42:13Z",
    "dateModified" : "2022-11-17T18:42:13Z",
    "id" : 47502,
    "listTypeEntries" : [ ],
    "name" : "Foo",
    "name_i18n" : {
       "en-US" : "Foo"
    }
    
  3. Global MenuControl PanelPicklists に移動します。 新しいピックリストが表示されます。

    新しいピックリストが追加されたことを確認します。

  4. また、Javaクライアントを使用してRESTサービスを呼び出すことも可能です。 java フォルダに移動し、ソースファイルをコンパイルします。

    javac -classpath .:* *.java
    
  5. ListTypeDefinition_POST_ToInstance.java クラスを実行します。

    java -classpath .:* ListTypeDefinition_POST_ToInstance
    

cURLコマンドの検証

ListTypeDefinition_POST_ToInstance.sh スクリプトは、cURL を使用して REST サービスを呼び出します。

curl \
	-H "Content-Type: application/json" \
	-X POST \
	"http://localhost:8080/o/headless-admin-list-type/v1.0/list-type-definitions" \
	-d "{\"name\": \"Foo\", \"name_i18n\": {\"en_US\": \"Foo\"}}" \
	-u "[email protected]:learn"

コマンドの引数は次のとおりです。

引数 説明
-H "Content-Type: application/json" リクエストボディのフォーマットがJSONであることを示します。
-X POST 指定されたエンドポイントで起動するHTTPメソッド
"http://localhost:8080/o/headless-admin-list-type/v1.0/list-type-definitions" RESTサービスのエンドポイント
-d "{\"name\": \"Foo\", \"name_i18n\": {\"en_US\": \"Foo\"}}" お客様が掲載を希望するデータ
-u "[email protected]:learn" 基本的な認証情報
note

ここでは、デモのためにベーシック認証を使用しています。 本番環境の場合は、OAuth2経由でユーザーを認証する必要があります。

他のcURLコマンドも同様のJSON引数を使用します。

Javaクラスを調べる

ListTypeDefinition_POST_ToInstance.java クラスは、 ListType関連サービスを呼び出して、ピックリストを追加します。

public static void main(String[] args) throws Exception {
	ListTypeDefinitionResource.Builder builder =
		ListTypeDefinitionResource.builder();

	ListTypeDefinitionResource listTypeDefinitionResource =
		builder.authentication(
			"[email protected]", "learn"
		).build();

	ListTypeDefinition listTypeDefinition =
		listTypeDefinitionResource.postListTypeDefinition(
			new ListTypeDefinition() {
				{
					name = "Foo";
					name_i18n = Collections.singletonMap("en_US", "Foo");
				}
			});

	System.out.println(listTypeDefinition);
}

このクラスは、3行のコードでRESTサービスを呼び出します。

行(省略形) 説明
ListTypeDefinitionResource.Builder builder = ... Builder ListTypeDefinitionResource サービスインスタンスを生成するためのビルダーを取得する。
ListTypeDefinitionResource listTypeDefinitionResource = builder.authentication(...).build(); Basic 認証を指定し、 ListTypeDefinitionResource サービスインスタンスを生成します。
ListTypeDefinition listTypeDefinitionResource = listTypeDefinitionResource.postListTypeDefinition(...); listTypeDefinitionResource.postListTypeDefinition メソッドを呼び出し、postにデータを渡す。

プロジェクトには、依存関係としてcom.liferay.headless.admin.list.type.clientファイルが含まれていることに注意してください。 インストールの API エクスプローラで、すべての REST アプリケーションのクライアント JAR 依存情報を /o/api (例: http://localhost:8080/o/api) で確認することができます。

note

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

他のJavaクラスも同様に、異なる ListTypeDefinitionResource メソッドを呼び出します。

important

サービスの詳細は ListTypeDefinitionResource を参照ください。

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

インスタンスからピックリストを取得する

以下のcURLまたはJavaコマンドを実行することで、Picklistを一覧表示することができます。

ListTypeDefinitions_GET_FromInstance.sh

コマンド:

./ListTypeDefinitions_GET_FromInstance.sh

コード:

curl \
	"http://localhost:8080/o/headless-admin-list-type/v1.0/list-type-definitions" \
	-u "[email protected]:learn"

ListTypeDefinitions_GET_FromInstance.java

コマンド:

java -classpath .:* ListTypeDefinitions_GET_FromInstance

コード:

public static void main(String[] args) throws Exception {
	ListTypeDefinitionResource.Builder builder =
		ListTypeDefinitionResource.builder();

	ListTypeDefinitionResource listTypeDefinitionResource =
		builder.authentication(
			"[email protected]", "learn"
		).build();

	Page<ListTypeDefinition> page =
		listTypeDefinitionResource.getListTypeDefinitionsPage(
			null, null, null, Pagination.of(1, 2), null);

	System.out.println(page);
}

Instance の Picklist オブジェクトが JSON で表示されます。

ピックリストの取得

以下のcURLまたはJavaコマンドで、特定のpicklistを取得します。

tip

インスタンスの Picklist ID を取得するには、 ListTypeDefinitions_GET_FromInstance.[java|sh] を使用してください。

ListTypeDefinition_GET_ById.sh

コマンド:

./ListTypeDefinition_GET_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-admin-list-type/v1.0/list-type-definitions/${1}" \
	-u "[email protected]:learn"

ListTypeDefinition_GET_ById.java

コマンド:

java -classpath .:* -DlistTypeDefinitionId=1234 ListTypeDefinition_GET_ById

コード:

public static void main(String[] args) throws Exception {
	ListTypeDefinitionResource.Builder builder =
		ListTypeDefinitionResource.builder();

	ListTypeDefinitionResource listTypeDefinitionResource =
		builder.authentication(
			"[email protected]", "learn"
		).build();

	System.out.println(
		listTypeDefinitionResource.getListTypeDefinition(
			Long.valueOf(System.getProperty("listTypeDefinitionId"))));
}

Picklist フィールドはJSONで表示されます。

ピックリストのパッチ

cURLとJavaパッチコマンドで既存のpicklistを編集します。 1234 をピックリストのIDに置き換えてください。

ListTypeDefinition_PATCH_ById.sh

コマンド:

./ListTypeDefinition_PATCH_ById.sh 1234

コード:

curl \
	-H "Content-Type: application/json" \
	-X PATCH \
	"http://localhost:8080/o/headless-admin-list-type/v1.0/list-type-definitions/${1}" \
	-d "{\"name\": \"Bar\", \"name_i18n\": {\"en_US\": \"Bar\"}}" \
	-u "[email protected]:learn"

ListTypeDefinition_PATCH_ById.java

コマンド:

java -classpath .:* -DlistTypeDefinitionId=1234 ListTypeDefinition_PATCH_ById

コード:

public static void main(String[] args) throws Exception {
	ListTypeDefinitionResource.Builder builder =
		ListTypeDefinitionResource.builder();

	ListTypeDefinitionResource listTypeDefinitionResource =
		builder.authentication(
			"[email protected]", "learn"
		).build();

	ListTypeDefinition listTypeDefinition =
		listTypeDefinitionResource.patchListTypeDefinition(
			Long.valueOf(System.getProperty("listTypeDefinitionId")),
			new ListTypeDefinition() {
				{
					name = "Bar";
					name_i18n = Collections.singletonMap("en_US", "Bar");
				}
			});

	System.out.println(listTypeDefinition);
}

ピックリストを置く

cURL と Java put コマンドで既存の picklist を完全に上書きします。 1234 をピックリストのIDに置き換えてください。

ListTypeDefinition_PUT_ById.sh

コマンド:

./ListTypeDefinition_PUT_ById.sh 1234

コード:

curl \
	-H "Content-Type: application/json" \
	-X PUT \
	"http://localhost:8080/o/headless-admin-list-type/v1.0/list-type-definitions/${1}" \
	-d "{\"name\": \"Goo\", \"name_i18n\": {\"en_US\": \"Goo\"}}" \
	-u "[email protected]:learn"

ListTypeDefinition_PUT_ById.java

コマンド:

java -classpath .:* -DlistTypeDefinitionId=1234 ListTypeDefinition_PUT_ById

コード:

public static void main(String[] args) throws Exception {
	ListTypeDefinitionResource.Builder builder =
		ListTypeDefinitionResource.builder();

	ListTypeDefinitionResource listTypeDefinitionResource =
		builder.authentication(
			"[email protected]", "learn"
		).build();

	ListTypeDefinition listTypeDefinition =
		listTypeDefinitionResource.putListTypeDefinition(
			Long.valueOf(System.getProperty("listTypeDefinitionId")),
			new ListTypeDefinition() {
				{
					name = "Goo";
					name_i18n = Collections.singletonMap("en_US", "Goo");
				}
			});

	System.out.println(listTypeDefinition);
}

選択リストを削除します

cURL と Java delete コマンドで既存の picklist を削除します。 1234 をピックリストのIDに置き換えてください。

ListTypeDefinition_DELETE_ById.sh

コマンド:

./Picklist_DELETE_ById.sh 1234

コード:

curl \
	-X DELETE \
	"http://localhost:8080/o/headless-admin-list-type/v1.0/list-type-definitions/${1}" \
	-u "[email protected]:learn"

ListTypeDefinition_DELETE_ById.java

コマンド

java -classpath .:* -DlistTypeDefinitionId=1234 ListTypeDefinition_DELETE_ById

コード:

public static void main(String[] args) throws Exception {
	ListTypeDefinitionResource.Builder builder =
		ListTypeDefinitionResource.builder();

	ListTypeDefinitionResource listTypeDefinitionResource =
		builder.authentication(
			"[email protected]", "learn"
		).build();

	listTypeDefinitionResource.deleteListTypeDefinition(
		Long.valueOf(System.getProperty("listTypeDefinitionId")));
}

ピックリストエントリーサービス

ピックリストを作成したら、以下のサービスを利用して、ピックリストのエントリーを作成・管理します。 ListTypeEntry のcURLコマンドとJavaクラスは、 ListTypeDefinitionのように動作します。 サービスによっては、ピックリストのIDを渡す必要があります。

ファイル 説明
ListTypeEntries_GET_FromListTypeDefinition.[java\|sh] ピックリストからピックリストエントリーのリストを取得します。
ListTypeEntry_DELETE_ById.[java\|sh] ピックリストエントリーを削除する。
ListTypeEntry_GET_ById[java\|sh] IDで特定のピックリストエントリーを取得します。
ListTypeEntry_POST_ToListTypeDefinition.[java\|sh] ピックリストにエントリーを投稿します。
ListTypeEntry_PUT_ById.[java\|sh] ピックリストエントリーを置く。

API Explorer ListTypeDefinitionListTypeEntry のすべてのサービスとスキーマを表示し、各サービスをテストするインター フェースを備えています。