Digital Asset Management APIs
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

ドキュメント・ショートカット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です。

次に、以下の手順に従います。

  1. サンプルプロジェクトをダウンロードして解凍します。

    curl https://resources.learn.liferay.com/examples/liferay-k9e8.zip -O
    
    unzip liferay-k9e8.zip
    
  2. ドキュメントとメディアアプリケーションに 3 つのドキュメントを追加します。 この例では、 crab.jpgshrimp.jpgbetta.jpgという画像で、 resources/images フォルダに含まれています。

  3. ドキュメントの ID を取得します。

    ショートカットを作成するには、ドキュメントの ID が必要です。 サイト内のドキュメントとその ID のリストを取得するには、ターミナルで Documents_GET_FromSites.sh スクリプトを実行します。

    重要

    --user オプションで指定されたメールアドレスとパスワードが、スクリプトで使用されているものと一致していることを確認します。

    ./Documents_GET_FromSites.sh [site-ID]
    

    レスポンスで、アップロードされたドキュメントの IDを見つけます。 この例では、 32078crab.jpg32067shrimp.jpg32054betta.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"
    ...
    
  4. フォルダの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
    ...
    
  5. アセット ライブラリの ID を取得します。

    アセット ライブラリへのショートカットを投稿するには、アセット ライブラリの ID が必要です。

    アセット ライブラリを作成すると、作成後に [全般] タブに ID が表示されます。

    すでにお持ちの場合は、 グローバル メニュー (Global Menu) を開き、 アプリケーション タブに移動して、コンテンツの下の アセット ライブラリ をクリックします。

    次に、必要なアセット ライブラリの [アクション] (Actions icon) をクリックし、 [編集]を選択します。 ID は [全般] タブに表示されます。

    [全般] タブでアセット ライブラリの ID を見つけます。

    この例では、IDは 32098です。

ドキュメントのショートカットを投稿できるようになりました。

サイトまたはアセットライブラリへのショートカットを投稿する

サイトまたはアセット ライブラリへのショートカットを投稿します。 特定のフォルダーを選択したり、サイト/アセット ライブラリのルート フォルダーに投稿したりすることもできます。

  1. ターミナルで、 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 フォルダに投稿されます。 ショートカットアイコン (shortcut icon) で識別されます。

指定したフォルダーにドキュメントのショートカットを追加します。

次に、Java クラスを使用してショートカットを投稿します。

  1. javaフォルダに移動し、Javaソースファイルをコンパイルします。

    cd ../java
    
    javac -classpath .:* *.java
    
  2. 以下の DocumentShortcuts_POST_ToSites クラスを実行して、ドキュメントとメディアへのショートカットを投稿します。その際、 siteId システム プロパティ値をサイトの ID に、 folderId をショートカットを配置するフォルダーの ID に、 targetDocumentId をショートカットのターゲット ドキュメントを示す値に置き換えます。

    java -classpath .:* -DsiteId=1234 -DfolderId=1234 -DtargetDocumentId=1234 DocumentShortcuts_POST_ToSites
    

    ユーザー名とパスワードがそれぞれ test@liferay.comlearnでない場合は、 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 画像を参照するようになりました。

ショートカットを更新し、targetDocumentId を変更します。

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

ショートカットを再度更新して、サイトのルート フォルダーに移動します。

DocumentShortcuts_PATCH_ById.java

コマンド:

java -classpath .:* -DdocumentShortcutId=1234 -DfolderId=1234 -DtargetDocumentId=1234 DocumentShortcuts_PATCH_ById

Java クラスは DocumentShortcutResourcepatchDocument メソッドを呼び出し、更新するフィールドを含む DocumentShortcut オブジェクトである DocumentShortcutの ID を渡します。

ショートカットの保存場所と参照を変更するには、 folderIdtargetDocumentId を変更します。

ショートカットを置く

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 画像を参照します。

ショートカットを再度更新して、「Liferay 提供」フォルダに戻します。

ドキュメントショートカット_PUT_ById.java

コマンド:

java -classpath .:* -DdocumentShortcutId=1234 -DfolderId=1234 -DtargetDocumentId=1234 DocumentShortcuts_PUT_ById

Java クラスは、 DocumentShortcutResourceputDocument メソッドを呼び出し、 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がドキュメントとメディアから削除されます。