ドキュメント・ショートカットAPIの基本
Liferay のヘッドレス配信アプリケーションは、サイトやアセット ライブラリにドキュメントのショートカットを追加したり、その情報を一覧表示したり、変更したり、削除したりすることなどができる ドキュメントとメディア 用の REST サービスを提供します。 これらのサービスは、cURL コマンドと Java クラスを使用して呼び出すことができます。
Liferay DXP 2024.Q4+/Portal GA129+ Documents APIは、ドキュメントのエントリ、フォルダ、タイプ、メタデータセット、ショートカットを参照するために外部参照コード(ERC)を使用するようになりました。これにより、インスタンス間で一貫した識別が可能になり、バッチエクスポート/インポートがサポートされて、コンテンツの管理と移植性が向上します。
まず環境を設定し、必要な情報を収集します。
環境を整える
新しいLiferay インスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.132-ga132
http://localhost:8080でLiferayにサインインします。 メールアドレス test@liferay.com とパスワード testを使用してください。 プロンプトが表示されたら、パスワードを learnに変更します。
サインインすると、 サイト IDを取得します。 この ID を複数のサービス呼び出しで使用します。 この例では、IDは 20117です。
次に、以下の手順に従います。
-
サンプルプロジェクトをダウンロードして解凍します。
curl https://resources.learn.liferay.com/examples/liferay-k9e8.zip -Ounzip liferay-k9e8.zip -
ドキュメントとメディアアプリケーションに 3 つのドキュメントを追加します。 この例では、
crab.jpg、shrimp.jpg、betta.jpgという画像で、resources/imagesフォルダに含まれています。 -
ドキュメントの ID を取得します。
ショートカットを作成するには、ドキュメントの ID が必要です。 サイト内のドキュメントとその ID のリストを取得するには、ターミナルで
Documents_GET_FromSites.shスクリプトを実行します。重要--userオプションで指定されたメールアドレスとパスワードが、スクリプトで使用されているものと一致していることを確認します。./Documents_GET_FromSites.sh [site-ID]レスポンスで、アップロードされたドキュメントの
IDを見つけます。 この例では、32078はcrab.jpg、32067はshrimp.jpg、32054はbetta.jpgです。... "encodingFormat" : "image/jpeg", "externalReferenceCode" : "4581bab6-2186-85f0-e384-dba35a897a95", "fileExtension" : "jpg", "fileName" : "crab.jpg", "friendlyUrlPath" : "crab", "id" : 32078, "keywords" : [ ], "numberOfComments" : 0, "relatedContents" : [ ], "renderedContents" : [ ], "siteId" : 20117, "sizeInBytes" : 114486, "taxonomyCategoryBriefs" : [ ], "title" : "crab" ... -
フォルダのIDを取得する
フォルダーへのショートカットを投稿するには、フォルダーの ID が必要です。
DocumentFolders_GET_FromSites.shスクリプトを実行して、サイト内の使用可能なフォルダーとその ID を取得します。./DocumentFolders_GET_FromSites.sh [site-ID]これにより、すべてのフォルダーのリストが返されます。 ない場合は、「Liferay 提供」のすぐに使用できるフォルダを使用してください。 この例では、IDは
31637です。... "customFields" : [ ], "dateCreated" : "2024-06-28T10:28:31Z", "dateModified" : "2024-06-28T10:28:31Z", "description" : "", "externalReferenceCode" : "d67f7b14-c9b4-8a24-872b-18c6c0f64efe", "id" : 31637, "name" : "Provided by Liferay", "numberOfDocumentFolders" : 0, "numberOfDocuments" : 7, "siteId" : 20117, "subscribed" : false ... -
アセット ライブラリの ID を取得します。
アセット ライブラリへのショートカットを投稿するには、アセット ライブラリの ID が必要です。
アセット ライブラリを作成すると、作成後に [全般] タブに ID が表示されます。
すでにお持ちの場合は、 グローバル メニュー (
) を開き、 アプリケーション タブに移動して、コンテンツの下の アセット ライブラリ をクリックします。次に、必要なアセット ライブラリの [アクション] (
) をクリックし、 [編集]を選択します。 ID は [全般] タブに表示されます。![[全般] タブでアセット ライブラリの ID を見つけます。](https://resources.learn.liferay.com/images/dxp/latest/en/integration/headless-apis/digital-asset-management-apis/document-shortcut-api-basics/images/01.png)
この例では、IDは
32098です。
ドキュメントのショートカットを投稿できるようになりました。
サイトまたはアセットライブラリへのショートカットを投稿する
サイトまたはアセット ライブラリへのショートカットを投稿します。 特定のフォルダーを選択したり、サイト/アセット ライブラリのルート フォルダーに投稿したりすることもできます。
- ターミナルで、
DocumentShortcuts_POST_ToSites.shを実行して、ショートカットをサイトに投稿します。サイト ID、フォルダー ID、およびドキュメント IDをパラメーターとして使用します。
ここで使用される例はサイトを対象としています。 アセット ライブラリ向けの例は、リソースの curl および java フォルダーに含まれています。 テストするには、 サイト ID を アセット ライブラリ ID に置き換えます。
./DocumentShortcuts_POST_ToSites.sh [site-ID] [folder-ID] [document-ID]
ドキュメントをサイト/アセット ライブラリのルート フォルダーに追加するには、 0 を フォルダー ID として使用します。
端末には同様の出力が表示されます。
{
"actions" : {
"get" : {
"method" : "GET",
"href" : "http://localhost:8080/o/headless-delivery/v1.0/document-shortcuts/32078"
}
},
"dateCreated" : "2024-07-05T12:16:17Z",
"dateModified" : "2024-07-05T12:16:17Z",
"folderId" : 31637,
"id" : 32100,
"siteId" : 20117,
"targetDocumentId" : 32078,
"title" : "crab"
}
この例では、 crab.jpg のショートカットが Provided by Liferay フォルダに投稿されます。 ショートカットアイコン (
) で識別されます。

次に、Java クラスを使用してショートカットを投稿します。
-
javaフォルダに移動し、Javaソースファイルをコンパイルします。cd ../javajavac -classpath .:* *.java -
以下の
DocumentShortcuts_POST_ToSitesクラスを実行して、ドキュメントとメディアへのショートカットを投稿します。その際、siteIdシステム プロパティ値をサイトの ID に、folderIdをショートカットを配置するフォルダーの ID に、targetDocumentIdをショートカットのターゲット ドキュメントを示す値に置き換えます。java -classpath .:* -DsiteId=1234 -DfolderId=1234 -DtargetDocumentId=1234 DocumentShortcuts_POST_ToSites注ユーザー名とパスワードがそれぞれ
test@liferay.comとlearnでない場合は、DocumentShortcuts_POST_ToSites.javaファイルでそれらの値を置き換え、クラスを実行する前に再コンパイルしてください。
クラスは、サイトのドキュメントとメディアの指定フォルダーに対象ドキュメントへのショートカットを作成します。
cURLコマンドとJavaクラスの仕組みをご覧ください。
cURLコマンドの検証
DocumentShortcuts_POST_ToSites.sh および DocumentShortcuts_POST_ToAssetLibraries.sh スクリプトは、cURL を使用して ヘッドレス配信 アプリケーション REST サービスを呼び出すことによってショートカットを投稿します。
ここでは、コマンドの引数を紹介します。
| 引数 | 説明 |
|---|---|
"http://localhost:8080/o/headless-delivery/v1.0/sites/${1}/document-shortcuts" | RESTサービスエンドポイント。 サイトIDのパラメーターが${1}に置き換わります。 |
"http://localhost:8080/o/headless-delivery/v1.0/asset-libraries/${1}/document-shortcuts" | RESTサービスエンドポイント。 アセット ライブラリ ID パラメータは ${1}を置き換えます。 |
--data-raw | リクエスト本文で送信された生の JSON データ。 ${2} および ${3} は、フォルダー ID とドキュメント ID のプレースホルダーです。 |
--header "Accept: application/json" | クライアントが JSON 形式での応答を期待することを指定します。 |
--header "Content-Type: application/json" \ | サーバーに送信されたリソースのメディア タイプ (MIME タイプ) は JSON です。 |
--request "POST" | 指定されたエンドポイントで呼び出すHTTPメソッド。 |
--user "test@liferay.com:learn" | 基本認証の資格情報。 |
ここでは、デモのために基本的な認証を使用しています。 本番環境では、 OAuth 2.0経由でユーザーを認証する必要があります。 OAuth2 を使用するサンプル React アプリケーションについては、 OAuth2 を使用してユーザーを承認する を参照してください。
DocumentShortcut REST サービスの他の cURL コマンドでも同様の引数が使用されます。
Javaクラスを調べる
DocumentShortcuts_POST_ToSites.java および DocumentShortcuts_POST_ToAssetLibraries.java クラスは、 ヘッドレス配信 アプリケーション REST サービスを呼び出してショートカットをポストします。
| 行(省略形) | 説明 |
|---|---|
DocumentShortcutResource.Builder builder = ... | Builder を取得して、 DocumentShortcutResource サービス インスタンスを生成します。 |
DocumentShortcutResource documentShortcutResource = builder.authentication(...).build(); | 基本認証を指定し、 DocumentShortcutResource サービス インスタンスを生成します。 |
DocumentShortcut documentShortcut = documentShortcutResource.postSiteDocumentShortcut(...); | DocumentShortcutResource.postSiteDocumentShortcut メソッドを呼び出し、サイト ID と、ドキュメント ショートカットを表す DocumentShortcut オブジェクトを渡します。 |
DocumentShortcut documentShortcut = documentShortcutResource.postAssetLibraryDocumentShortcut(...); | DocumentShortcutResource.postAssetLibraryDocumentShortcut メソッドを呼び出し、アセット ライブラリ ID と、ドキュメント ショートカットを表す DocumentShortcut オブジェクトを渡します。 |
プロジェクトには、依存関係としてcom.liferay.headless.delivery.client.jarファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/apiでインストール先のAPIエクスプローラーで確認できます。
メイン メソッドのコメントは、クラスの実行を示しています。
他の Java クラスの例もこれに似ていますが、異なる DocumentShortcutResource メソッドを呼び出します。
サービスの詳細については、 DocumentShortcutResource を参照してください。
以下は、cURL と Java を使用して他の DocumentShortcut REST サービスを呼び出す例です。
ショートカットを取得
サイトまたはアセット ライブラリからドキュメント ショートカットを一覧表示できます。 ID を使用して特定のショートカットに関する情報を取得することもできます。
サイトまたはアセットライブラリからショートカットを取得する
サイトからドキュメントのショートカットを一覧表示するには、次の cURL コマンドまたは Java クラスを実行します。 上記のように、 [site-ID]/[asset-library-ID] をそれぞれサイト/アセットライブラリの ID に置き換えます。
./DocumentShortcuts_GET_FromSites.sh [site-ID]
端末には同様の出力が表示されます。
{
...
"facets" : [ ],
"items" : [ {
"actions" : {
"get" : {
"method" : "GET",
"href" : "http://localhost:8080/o/headless-delivery/v1.0/document-shortcuts/32078"
}
},
"dateCreated" : "2024-07-05T12:16:17Z",
"dateModified" : "2024-07-05T12:16:17Z",
"folderId" : 31637,
"id" : 32100,
"siteId" : 20117,
"targetDocumentId" : 32078,
"title" : "crab"
} ],
"lastPage" : 1,
"page" : 1,
"pageSize" : 20,
"totalCount" : 1
}
Java クラスを実行することもできます:
java -classpath .:* -DsiteId=1234 DocumentShortcuts_GET_FromSites
ショートカット、それが保存されているサイト/アセット ライブラリ、それが指すドキュメント、その ID、タイトル、作成日、変更日、およびドキュメントに関連するその他の詳細に関する情報が表示されます。
アセット ライブラリに保存されたショートカットには、応答に assetLibraryKey フィールドが含まれます。
特定のショートカットを取得する
次の cURL または Java コマンドを実行すると、特定のショートカットを取得できます。 [ショートカットID] をショートカットのIDに置き換えます。
./DocumentShortcuts_GET_ById.sh [shortcut-ID]
assetLibraryKey がリストされていない場合、ショートカットはサイト内にあります。
...
"dateCreated": "2024-07-05T12:16:17Z",
"dateModified": "2024-07-05T12:16:17Z",
"folderId": 31637,
"id": 32100,
"siteId": 20117,
"targetDocumentId": 32078,
"title": "crab"
...
逆に、ショートカットがアセット ライブラリに保存されている場合は、出力に assetLibraryKey フィールドが表示されます。
...
"assetLibraryKey": "Asset Library",
"dateCreated": "2024-07-05T12:30:58Z",
"dateModified": "2024-07-05T12:30:58Z",
"folderId": 0,
"id": 32102,
"siteId": 32099,
"targetDocumentId": 32078,
"title": "crab"
...
Java クラスを実行することもできます:
java -classpath .:* -DdocumentShortcutId=1234 DocumentShortcuts_GET_ById
ショートカットをパッチする
PATCH サービスはショートカット内の特定のフィールドを更新します。 次の cURL または Java コマンドを実行してショートカットを更新できます。
この演習では、Provided by Liferay フォルダに追加されたショートカットの [ショートカット ID] を使用します。 [folder-ID] をフォルダー ID に置き換え、 [target-document-ID] を shrimp.jpg 画像 ID に置き換えます。 これによりショートカットが更新され、画像が crab.jpg から shrimp.jgpに変更されます。
ドキュメントショートカット_PATCH_ById.sh
コマンド:
./DocumentShortcuts_PATCH_ById.sh [shortcut-ID] [folder-ID] [target-document-ID]
...
--data-raw '{
"folderId": '{$2}',
"targetDocumentId": '{$3}',
"viewableBy": "Anyone"
}' \
...
PATCH リクエストはターゲット ドキュメントを更新し、 shrimp.jpg 画像を参照するようになりました。

次に、スクリプトを再度実行し、 folderId フィールドを 0 に変更して、ショートカットをサイトのルート フォルダーに移動します。

DocumentShortcuts_PATCH_ById.java
コマンド:
java -classpath .:* -DdocumentShortcutId=1234 -DfolderId=1234 -DtargetDocumentId=1234 DocumentShortcuts_PATCH_ById
Java クラスは DocumentShortcutResourceの patchDocument メソッドを呼び出し、更新するフィールドを含む DocumentShortcut オブジェクトである DocumentShortcutの ID を渡します。
ショートカットの保存場所と参照を変更するには、 folderId と targetDocumentId を変更します。
ショートカットを置く
PUT サービスはショートカットとそのフィールドを完全に置き換えます。 次の cURL または Java コマンドを実行してショートカットを置き換えることができます。
この演習では、前回のPATCHリクエストでProvided by Liferayフォルダに移動されたショートカットの [shortcut-ID] を使用します。 [folder-ID] を Provided by Liferay のフォルダ ID に置き換え、 [target-document-ID] を betta.jpg 画像 ID に置き換えます。 これによりショートカットが更新され、Provided by Liferay フォルダに戻され、画像が shrimp.jpg から betta.jgpに変更されます。
ドキュメントショートカット_PUT_ById.sh
コマンド:
./DocumentShortcuts_PUT_ById.sh [shortcut-ID] [folder-ID] [target-document-ID]
ショートカットは Provided by Liferay フォルダに戻り、 betta.jpg 画像を参照します。

ドキュメントショートカット_PUT_ById.java
コマンド:
java -classpath .:* -DdocumentShortcutId=1234 -DfolderId=1234 -DtargetDocumentId=1234 DocumentShortcuts_PUT_ById
Java クラスは、 DocumentShortcutResourceの putDocument メソッドを呼び出し、 DocumentShortcutの ID、 DocumentShortcut オブジェクト ( DocumentShortcutの フォルダー フィールドと targetDocument フィールドの値が含まれています。
上記の cURL コマンドと Java クラスは、 DocumentShortcut インスタンスを完全に新しいものに置き換えます。
ショートカットを削除する
次の cURL または Java コマンドを実行してショートカットを削除します。 [ショートカットID] をショートカットのIDに置き換えます。
操作が成功した場合、コード 204 応答があり、何も返されません。
ドキュメントショートカット_DELETE_ById.sh
コマンド:
./DocumentShortcuts_DELETE_ById.sh [shortcut-ID]
ドキュメントショートカット_DELETE_ById.java
コマンド
java -classpath .:* -DdocumentShortcutId=1234 DocumentShortcuts_DELETE_ById
DocumentShortcutがドキュメントとメディアから削除されます。