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

Base64エンコードされたファイルでオブジェクトAPIを使用する

Liferay DXP 2024.Q2+/Portal GA120+

API を介して 添付ファイルフィールド を持つオブジェクトエントリを作成する場合、通常はコンピュータからファイルをアップロードするか、 ドキュメントとメディア アプリケーションにアップロードされたファイルを使用できます。 どちらのシナリオも複数の手順を必要とする。

API経由でオブジェクトエントリを投稿する際に、ドキュメントをアップロードしてそのIDまたは外部参照コード(ERC)を指定するか、API経由でオブジェクトエントリを投稿した後、UIを通じてファイルを添付することができます。

あるいは、POSTリクエストを作成し、リクエストボディにBase64エンコードされたファイルを含めることで、添付ファイル付きのオブジェクトエントリを一度に送信することもできます。

注記

Liferay DXP 2024.Q4+/Portal GA129+ オブジェクトフレームワークは、ERCを使用して添付ファイルをオブジェクトエントリにリンクし、環境間で一貫した参照を可能にします。 ユーザーが直接アップロードし、「ドキュメントとメディア」から非表示になっている添付ファイルの場合、インポート時に利用しやすくするために、添付ファイルの内容をBase64形式でエクスポートデータに含めることができます。 詳細については、 オブジェクトのエクスポートとインポート を参照してください。

先に進む前に、 新しいLiferay DXP/Portal 7.4インスタンスを セットアップし、 提供されているチュートリアルコードを 準備してください。

Liferayインスタンスの設定

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 に変更してください。

このチュートリアルの基本的なオブジェクトを作成するには、以下の手順に従ってください:

  1. グローバルメニュー (Global Menu) を開き、 コントロールパネル → オブジェクト に移動します。

  2. 追加 ボタン (Add Button) をクリックし、以下の値を入力してください。

    分野価値
    ラベルできる
    複数形ラベルエイブルズ
    名前できる
  3. 新しい オブジェクト ドラフトを選択し、 フィールド タブに移動して、次のフィールドを追加します。

    ラベルフィールド名タイプリクエストファイル
    ユーザーコンピュータ添付ファイル1ユーザーコンピュータ添付ファイル1添付ファイルユーザーのコンピューターから直接アップロードする
    ユーザーのコンピュータ添付ファイル2ユーザーのコンピュータ添付ファイル2添付ファイルユーザーのコンピューターから直接アップロード ( ドキュメントとメディア内のファイルを表示 オプションを切り替えます)
    ドキュメントとメディア添付ファイルドキュメントとメディア添付ファイル添付ファイルドキュメントとメディアアイテムセレクターからアップロードまたは選択

    または、 ObjectDefinitions_POST_ToInstance.sh を実行してオブジェクト定義を作成します。 その後、 グローバルメニュー → コントロールパネル → オブジェクト からオブジェクト定義にアクセスして、次のステップに進むことができます。

    ./ObjectDefinitions_POST_ToInstance.sh
    
  4. 詳細タブで、スコープとして 会社 を選択し、パネルリンクで オブジェクト を選択し、 公開 をクリックします。

    重要

    このチュートリアルでは、上記の値を使用する必要があります。

公開後は、APIを介してオブジェクトにアクセスできます。

サンプルコードの準備

以下のコマンドを実行して、提供されているサンプルコードをダウンロードして解凍してください。

curl https://resources.learn.liferay.com/examples/liferay-p7x7.zip -O
unzip liferay-p7x7.zip

これらのスクリプトには、以下のAPIが含まれています。

HTTP メソッドHTTPエンドポイント説明
GET/Liferayインスタンス内のオブジェクトエントリの完全なリストを返します。結果はページ分割、フィルタリング、検索、およびソートが可能です。
POST/API呼び出しで提供された詳細情報を使用して、オブジェクトエントリを作成します。
PUT/[objectNameId]指定されたオブジェクトエントリの詳細を、API呼び出しで提供された情報に置き換えます。
消去/[objectNameId]指定されたオブジェクトエントリを削除し、操作が成功した場合は204を返します。
  1. サンプルコードをダウンロードしたら、 liferay-p7x7 プロジェクト内の curl フォルダーに移動します。

    cd liferay-p7x7/curl
    

ユーザーのコンピューターから直接アップロードされた添付ファイルを投稿する

ユーザーのコンピューターから直接アップロード ファイルのリクエストオプションを使用して添付ファイル付きのオブジェクトエントリを作成するには、

  1. Ables_POST_FromUsersComputer1.sh を実行します。 これにより、Base64ファイルが添付されたオブジェクトエントリが作成されます。

    ./Ables_POST_FromUsersComputer1.sh
    

    fileBase64 パラメータを使用して、ファイルをオブジェクトエントリに添付します。

    ...
    	--data-raw '{
    		"externalReferenceCode": "ATTACHMENT_FROM_USERS_COMPUTER_1",
    		"usersComputerAttachment1": {
    			"fileBase64": "iVB0...gg=="、
    			"名前": "AttachmentFromUsersComputer1.png"
    		}
    ...
    

    端末には同様の出力が表示されます。

    {
       "アクション": {
          "権限": {
             "メソッド": "GET",
             "href": "http://localhost:8080/o/c/ables/32268/permissions"
          },
          "get": {
             "メソッド": "GET",
             "href": "http://localhost:8080/o/c/ables/32268"
          },
          "replace": {
             "メソッド": "PUT",
             "href": "http://localhost:8080/o/c/ables/32268"
          },
          "update": {
             "メソッド": "PATCH",
             "href": "http://localhost:8080/o/c/ables/32268"
          },
          "削除": {
             "メソッド": "DELETE",
             "href": "http://localhost:8080/o/c/ables/32268"
          }
       },
       "creator": {
          "additionalName": "",
          "contentType": "UserAccount",
          "familyName": "Test",
          "givenName": "Test",
          "id": 20122,
          "name": "Test Test"
       },
       "dateCreated": "2024-06-05T16:37:26Z",
       "dateModified": "2024-06-05T16:37:26Z",
       "externalReferenceCode": "ATTACHMENT_FROM_USERS_COMPUTER_1",
       "id": 32268,
       "keywords": [],
       "status": {
          "code": 0,
          "label": "approved",
          "label_i18n": "承認済み"
       },
       "taxonomyCategoryBriefs": [],
       "usersComputerAttachment1": {
          "id": 32263,
          "link": {
             "href": "/documents/32260/32262/AttachmentFromUsersComputer1.png/f0a02e6a-8eeb-d021-bfdd-82da1afab1cf?version=1.0&t=1717605446526&download=true&objectDefinitionExternalReferenceCode=ABLE&objectEntryExternalReferenceCode=ATTACHMENT_FROM_USERS_COMPUTER_1",
             "label": "AttachmentFromUsersComputer1.png"
          },
          "name": "AttachmentFromUsersComputer1.png"
       }
    }
    

    デフォルトでは、レスポンスには fileBase64 エンコーディングは含まれないことに注意してください。 詳細については、 レスポンスで添付ファイルの内容を取得する を参照してください。

Ables_POST_FromUsersComputer2.sh を実行して、 ユーザーのコンピュータから直接アップロード 要求ファイルオプションと ドキュメントとメディアのファイルを表示 オプションをオンにして、添付ファイル付きのオブジェクトエントリを作成します。 フォルダを指定する必要はありません。 フォルダの選択は、会社スコープのオブジェクト定義の場合は会社に基づいて、サイトスコープのオブジェクト定義の場合はサイトに基づいて自動的に行われます。

./Ables_POST_FromUsersComputer2.sh

ドキュメントとメディアアイテムセレクターからアップロードまたは選択した添付ファイルを投稿する

  1. アップロードされたファイルを保存するフォルダを作成するには、 DocumentFolders_POST_ToSite.sh を実行します。 サイトIDをパラメータとして使用してください。 この例では、サイトIDは 20117です。

    ヒント

    サイト ID は、 サイト メニュー (Site Menu) → 設定 → サイト設定 → サイト設定 プラットフォームの下にあります。

    ./DocumentFolders_POST_ToSite.sh [サイトID]
    

    端末には同様の出力が表示されるはずです。

    {
    "アクション" : {
       "購読" : {
          "メソッド" : "PUT"、
          "href" : "http://localhost:8080/o/headless-delivery/v1.0/document-folders/32258/subscribe"
       },
       "unsubscribe" : {
          "method" : "PUT"、
          "href" : "http://localhost:8080/o/headless-delivery/v1.0/document-folders/32258/unsubscribe"
       }、
       "get" : {
          "メソッド" : "GET"、
          "href" : "http://localhost:8080/o/headless-delivery/v1.0/document-folders/32258"
       },
       "replace" : {
          "method" : "PUT",
          "href" : "http://localhost:8080/o/headless-delivery/v1.0/document-folders/32258"
       },
       "update" : {
          "method" : "PATCH",
          "href" : "http://localhost:8080/o/headless-delivery/v1.0/document-folders/32258"
       },
       "delete" : {
          "メソッド" : "DELETE"、
          "href" : "http://localhost:8080/o/headless-delivery/v1.0/document-folders/32258"
       }
    },
    "creator" : {
       "additionalName" : "",
       "contentType" : "UserAccount"、
       "familyName" : "テスト"、
       "GivenName" : "テスト"、
       "id" : 20122、
       "name" : "Test Test"
    }、
    "customFields" : [ ],
    "作成日" : "2024-06-05T16:37:12Z",
    "更新日" : "2024-06-05T16:37:12Z"、
    "説明" : "このフォルダには、この演習の添付ファイルが保存されます。"、
    "externalReferenceCode" : "ABLE_FOLDER"、
    "id" : 32258、
    "name" : "Able Folder"、
    "numberOfDocumentFolders" : 0、
    "numberOfDocuments" : 0、
    "siteId" : 20117、
    "購読済み" : false
    }
    
  2. Ables_POST_FromDocumentsAndMedia.sh を実行します。 これにより、Base64ファイルが添付されたオブジェクトエントリが作成され、最近作成されたフォルダに配置されます。 フォルダのERCとサイトIDをパラメータとして使用します。 この例では、ERC は ABLE_FOLDER で、サイト ID は 20117 です。

    ./Ables_POST_FromDocumentsAndMedia.sh [ERC] [site-id]
    

    フォルダー パラメーターを使用して、 externalReferenceCode と siteId を追加し、ドキュメントを保存します。

    ...
    "フォルダー": {
       "externalReferenceCode": "'${1}'"、
       "siteId": "'${2}'"
    },
    ...
    
    注記

    siteId または ERC が含まれていない、null または空の場合、POST リクエストは正常に動作し、ファイルはデフォルト サイトのルート フォルダーにアップロードされます。

    端末には同様の出力が表示されるはずです。

    {
    "アクション" : {
       "権限" : {
          "メソッド" : "GET",
          "href" : "http://localhost:8080/o/c/ables/32337/permissions"
       },
       "get" : {
          "メソッド" : "GET",
          "href" : "http://localhost:8080/o/c/ables/32337"
       },
       "置換" : {
          "メソッド" : "PUT",
          "href" : "http://localhost:8080/o/c/ables/32337"
       },
       "更新" : {
          "method" : "PATCH",
          "href" : "http://localhost:8080/o/c/ables/32337"
       },
       "delete" : {
          "method" : "DELETE",
          "href" : "http://localhost:8080/o/c/ables/32337"
       }
    },
    "creator" : {
       "additionalName" : "",
       "contentType" : "UserAccount",
       "familyName" : "Test",
       "givenName" : "Test",
       "id" : 20122,
       "name" : "Test Test"
    },
    "dateCreated" : "2024-06-05T16:37:36Z",
    "dateModified" : "2024-06-05T16:37:36Z",
    "externalReferenceCode" : "ATTACHMENT_FROM_DOCS_AND_MEDIA",
    "id" : 32337,
    "keywords" : [ ],
    "status" : {
       "code" : 0,
       "label" : "approved",
       "label_i18n" : "承認済み"
    },
    "taxonomyCategoryBriefs" : [ ],
    "docsAndMediaAttachment" : {
       "id" : 32332,
       "link" : {
          "href" : "/documents/20119/0/AttachmentFromDocumentsAndMedia.png/bbe75f48-04ce-2967-1721-973655b9a853?version=1.0&t=1717605455991&download=true&objectDefinitionExternalReferenceCode=ABLE&objectEntryExternalReferenceCode=ATTACHMENT_FROM_DOCS_AND_MEDIA",
          "label" : "AttachmentFromDocumentsAndMedia.png"
       },
       "name" : "AttachmentFromDocumentsAndMedia.png"
    }
    }
    
    注記

    宛先フォルダに既存のファイルと同じ名前のファイルをアップロードすると、新しいファイルの名前が括弧内の一意の連番で変更されます(例: 名前 (n).拡張子)。

    デフォルトでは、レスポンスには fileBase64 エンコーディングは含まれないことに注意してください。 詳細については、 レスポンスで添付ファイルの内容を取得する を参照してください。

すべてのエントリのリストを取得する

  1. すべてのエントリのリストを取得するには、 Ables_GET_FromCompany.sh を実行してください。

    ./Ables_GET_FromCompany.sh
    

    応答には、添付ファイルに関する情報、例えば ID、ダウンロードできる リンク 、その ラベル、および 名前 などが含まれる必要があります。

    ...
    "作成日" : "2024-06-05T16:37:26Z"、
    "更新日" : "2024-06-05T16:37:26Z"、
    "externalReferenceCode" : "ATTACHMENT_FROM_USERS_COMPUTER_1"、
    "id" : 32268、
    "keywords" : [ ]、
    "status" : {
    "コード" : 0,
    "ラベル" : "承認済み",
    "label_i18n" : "承認済み"
    },
    "taxonomyCategoryBriefs" : [ ],
    "usersComputerAttachment1" : {
    "id" : 32263,
    "リンク" : {
       "href" : "/documents/32260/32262/AttachmentFromUsersComputer1.png/f0a02e6a-8eeb-d021-bfdd-82da1afab1cf?version=1.0&t=1717605446526&download=true&objectDefinitionExternalReferenceCode=ABLE&objectEntryExternalReferenceCode=ATTACHMENT_FROM_USERS_COMPUTER_1",
       "label" : "AttachmentFromUsersComputer1.png"
    },
    "name" : "AttachmentFromUsersComputer1.png"
    }
    ...
    

    応答にはファイルのアドレスが含まれていますが、デフォルトでは fileBase64 エンコーディングは含まれていないことに注意してください。 詳細については、 レスポンスで添付ファイルの内容を取得する を参照してください。

オブジェクトエントリを添付ファイルで更新する

PUTリクエストを使用して、API呼び出しで提供された詳細情報でオブジェクトエントリ全体を置き換えます。 この場合、オブジェクトエントリをPOSTする際に使用したのと同じ構造をPUTリクエストにも使用する必要がありますが、更新したい特定のフィールドについては変更を加える必要があります。

同様に、PATCHリクエストには構造内で変更する特定のフィールドのみが含まれますが、PATCHの構造と内容が作成時に使用されたものと一致していることを確認する必要があります。

PUTリクエストを使用してエントリを変更するには、

  1. Ables_PUT_ById.sh を実行して、オブジェクトエントリに添付されている外部参照コードとファイル名を変更します。 オブジェクトエントリIDをパラメータとして使用します。

    この例では、GETリクエストで取得された「ATTACHMENT_FROM_USERS_COMPUTER_1」エントリのIDは32268です。

    ./Ables_PUT_ById.sh [オブジェクトID]
    

    応答には、オブジェクトエントリの更新された情報が表示されます。 応答にはファイルのアドレスが含まれていますが、デフォルトでは fileBase64 エンコーディングは含まれていません。 詳細については、 レスポンスで添付ファイルの内容を取得する を参照してください。

  2. 外部参照コードは現在 ATTACHMENT_FROM_USERS_COMPUTER_1_ALTERED であり、画像の名前は AttachmentFromUsersComputer1Altered.png です。

    "作成日" : "2024-06-05T16:37:26Z"、
    "更新日" : "2024-06-05T16:38:11Z"、
    "externalReferenceCode" : "Attachment_FROM_USERS_COMPUTER_1_ALTERED",
    ...
       "リンク" : {
          "href" : "/documents/32260/32262/AttachmentFromUsersComputer1Altered.png/da5fe5a1-c36c-e016-846e-20720b7469a8?version=1.0&t=1717605491796&download=true&objectDefinitionExternalReferenceCode=ABLE&objectEntryExternalReferenceCode=ATTACHMENT_FROM_USERS_COMPUTER_1_ALTERED"、
          "label" : "AttachmentFromUsersComputer1Altered.png"
       }、
       "名前" : "AttachmentFromUsersComputer1Altered.png"
    }
    

添付ファイル付きのオブジェクトエントリを削除する

  1. Ables_DELETE_ById.sh を実行して、オブジェクトエントリとその添付ファイルを削除します。 オブジェクトエントリIDをパラメータとして使用します。

    ./Ables_DELETE_ById.sh [オブジェクトID]
    
  2. 応答に内容がありません。

レスポンスで添付ファイルの内容を取得する

レスポンスで Base64 エンコードされたファイルを取得するには、 nestedFields=[fieldName].fileBase64 クエリ パラメータを使用して、それをネストされたフィールドとして要求する必要があります。 ユーザーが要求していない場合は、Base64エンコードの計算を回避します。

ATTACHMENT_FROM_USERS_COMPUTER_2 ERC を持つエントリの添付ファイルの内容を取得するには、ターミナルでこの cURL コマンドを実行してください。

curl \
   "http://localhost:8080/o/c/ables/by-external-reference-code/ATTACHMENT_FROM_USERS_COMPUTER_2?nestedFields=usersComputerAttachment2.fileBase64" \
   --request "GET" \
   --user "test@liferay.com:learn"

ターミナルには、Base64エンコードされたファイル、そのID、リンク、ラベル、および名前を含む同様の出力が表示されるはずです。

...
"usersComputerAttachment2" : {
   "fileBase64" : "iVBORw0KG...kJggg==",
   "id" : 32283,
   "リンク" : {
   "href" : "/documents/20119/32281/AttachmentFromUsersComputer2.png/266a539c-506c-8273-96d2-15206933b993?version=1.0&t=1717605449655&download=true&objectDefinitionExternalReferenceCode=ABLE&objectEntryExternalReferenceCode=ATTACHMENT_FROM_USERS_COMPUTER_2"、
   "label" : "AttachmentFromUsersComputer2.png"
   }、
   "名前" : "AttachmentFromUsersComputer2.png"
}

レスポンスで添付ファイルのフォルダを取得する

Base64 エンコードされたファイルが保存されているフォルダをレスポンスで取得するには、 nestedFields=[fieldName].folder クエリ パラメータを使用して、それをネストされたフィールドとして要求する必要があります。 これにより、不要なデータアクセスを回避できます。

ATTACHMENT_FROM_DOCS_AND_MEDIA ERC を含むエントリのフォルダを取得するには、ターミナルでこの cURL コマンドを実行してください。

curl \
   "http://localhost:8080/o/c/ables/by-external-reference-code/ATTACHMENT_FROM_DOCS_AND_MEDIA?nestedFields=docsAndMediaAttachment.folder" \
   --request "GET" \
   --user "test@liferay.com:learn"

ターミナルには、フォルダの ERC と siteId の場所を示す同様の出力が表示されます。

...
"docsAndMediaAttachment" : {
   "folder" : {
   "externalReferenceCode" : "ABLE_FOLDER",
   "siteId" : 20117
   },
...