ピックリスト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が起動したら。
Picklists API Basics をダウンロードし、解凍してください。
curl https://resources.learn.liferay.com/dxp/latest/ja/building-applications/objects/picklists/liferay-v3n6.zip -O
unzip liferay-v3n6.zip
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" }
Global Menu → Control Panel → Picklists に移動します。 新しいピックリストが表示されます。
また、Javaクライアントを使用してRESTサービスを呼び出すことも可能です。
java
フォルダに移動し、ソースファイルをコンパイルします。javac -classpath .:* *.java
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" |
基本的な認証情報 |
ここでは、デモのためにベーシック認証を使用しています。 本番環境の場合は、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) で確認することができます。
main
メソッドのコメントでは、クラスの実行を実演しています。
他のJavaクラスも同様に、異なる ListTypeDefinitionResource
メソッドを呼び出します。
サービスの詳細は 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を取得します。
インスタンスの 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 ListTypeDefinition
と ListTypeEntry
のすべてのサービスとスキーマを表示し、各サービスをテストするインター フェースを備えています。