AEM Assets API を使用してコンテンツをアップデートする方法

AEM ヘッドレスデベロッパージャーニーのこの部分では、REST API を使用してコンテンツフラグメントのコンテンツにアクセスし、アップデートする方法について説明します。

これまでの説明内容

以前の AEM ヘッドレスジャーニードキュメント(「AEM Delivery API を使用してコンテンツにアクセスする方法」)では、AEM GraphQL API を介して AEM のヘッドレスコンテンツにアクセスする方法を説明したので、次ができるはずです。

  • GraphQL について大まかなレベルで理解する
  • AEM GraphQL API の仕組みを理解する
  • 実用的なサンプルクエリを理解する

この記事は、これらの基本事項に基づいて構築されているので、REST API を使用して AEM の既存のヘッドレスコンテンツをアップデートする方法を理解できます。

目的

  • オーディエンス:経験者
  • 目的:REST API を使用して、コンテンツフラグメントのコンテンツにアクセスし、アップデートする方法を説明します。
    • AEM Assets HTTP API を紹介します。
    • API でのコンテンツフラグメントのサポートを紹介し、説明します。
    • API の詳細を説明します。

コンテンツフラグメントに Assets HTTP API が必要な理由

ヘッドレスジャーニーの前の段階では、AEM GraphQL API を使用してクエリを使用してコンテンツを取得する方法を学びました。

では、他の API が必要なのでしょうか?

Assets HTTP API を使用すると、コンテンツを​読み取る​ことができます。また、コンテンツを​作成アップデート削除​することができます。これらは、GraphQL API では実行できないアクションです。

Assets REST API は、最新の Adobe Experience Manager as a Cloud Service バージョンの標準インストールで利用できます。

Assets HTTP API

Assets HTTP API には次の API が含まれます。

  • Assets REST API
  • コンテンツフラグメントをサポートしています。

現在の Assets HTTP API の実装は、REST アーキテクチャスタイルに基づいており、CRUD 操作(作成、読み取り、アップデート、削除)を使用して(AEM に保存された)コンテンツにアクセスできます。

これらの操作を使用して、API では、コンテンツサービスを JavaScript フロントエンドアプリケーションに提供することで、Adobe Experience Manager as a Cloud Service をヘッドレス CMS(コンテンツ管理システム)として動作させることができます。または、HTTP リクエストを実行して JSON 応答を処理できる他のどのようなアプリケーションにもすることができます。例えば、単一ページアプリケーション(SPA)では、フレームワークベースかカスタムかを問わず、API 経由で提供されるコンテンツ(多くの場合 JSON 形式)が必要です。

Assets HTTP API とコンテンツフラグメント

コンテンツフラグメントはヘッドレス配信に使用される、特別なタイプのアセットです。コンテンツフラグメントを使用すれば、テキスト、数値、日付など様々な要素を含む構造化データにアクセスできます。

Assets REST API の使用

アクセス

Assets REST API は /api/assets エンドポイントを使用しており、アクセスするにはアセットのパス(先頭の /content/dam を除く)が必要です。

  • つまり、次の場所のアセットにアクセスするには
    • /content/dam/path/to/asset
  • 次のリクエストが必要です。
    • /api/assets/path/to/asset

例えば、/content/dam/wknd/en/adventures/cycling-tuscany にアクセスするには、/api/assets/wknd/en/adventures/cycling-tuscany.json をリクエストします。

メモ

アクセス経由:

  • /api/assets.model セレクターを使用する​必要はありません
  • /content/path/to/page.model セレクターを使用する​必要があります

操作

実行する操作は HTTP メソッドで決まります。

  • GET:アセットまたはフォルダーの JSON 表現を取得します
  • POST:新しいアセットまたはフォルダーを作成します
  • PUT:アセットまたはフォルダーのプロパティを更新します
  • DELETE:アセットまたはフォルダーを削除します
メモ

リクエスト本文または URL パラメーターは、これらの操作の一部を設定するために使用できます。例えば、フォルダーまたはアセットを POST リクエストで作成するように定義できます。

サポートされているリクエストの正確な形式は、『API リファレンス』ドキュメントで定義されています。

使用方法は、特定の使用例以外にも、AEM オーサーを使用するかパブリッシュ環境を使用するかで異なることがあります。

  • 作成時にはオーサーインスタンスに結び付けることを強くお勧めします(現在は、この API を使用して公開するフラグメントをレプリケートする手段はありません)。

  • 配信は、どちらからも可能です。AEM では、要求されたコンテンツを JSON 形式でのみ提供するからです。

    • ファイアウォールの背後で動作するメディアライブラリアプリケーションには、AEM オーサーインスタンスからの格納と配信で十分です。

    • ライブ Web 配信の場合は、AEM パブリッシュインスタンスをお勧めします。

注意

AEM クラウドインスタンス上の Dispatcher 設定により、/api へのアクセスがブロックされる場合があります。

メモ

詳細については、『API リファレンス』を参照してください。特に、Adobe Experience Manager Assets API - コンテンツフラグメント

読み取り/配信

使用方法は次のとおりです。

GET /{cfParentPath}/{cfName}.json

次に例を示します。

http://<host>/api/assets/wknd/en/adventures/cycling-tuscany.json

応答は、コンテンツがコンテンツフラグメントに構造化されたシリアル化 JSON です。参照は参照 URL として配信されます。

次の 2 通りの読み取り操作が可能です。

  • 特定のコンテンツフラグメントをパスで読み取る。この場合は、コンテンツフラグメントの JSON 表現が返されます。
  • コンテンツフラグメントのフォルダーをパスで読み取る。この場合は、フォルダー内のすべてのコンテンツフラグメントの JSON 表現が返されます。

作成

使用方法は次のとおりです。

POST /{cfParentPath}/{cfName}

本文には、作成するコンテンツフラグメントの JSON 表現を含める必要があります。これには、コンテンツフラグメント要素に設定する必要がある初期コンテンツも含まれます。cq:model プロパティの設定が必須で、このプロパティが有効なコンテンツフラグメントモデルを指している必要があります。そうしないと、エラーが発生します。また、Content-Type ヘッダーを追加することも必要です。これは application/json に設定されます。

アップデート

使用方法は次のとおりです。

PUT /{cfParentPath}/{cfName}

本文には、特定コンテンツフラグメントの更新内容の JSON 表現を含める必要があります。

これには、コンテンツフラグメントのタイトルや説明、単一のエレメント、またはすべての要素値やメタデータを使用できます。

削除

使用方法は次のとおりです。

DELETE /{cfParentPath}/{cfName}

AEM Assets REST API の使用の詳細については、次を参照してください。

  • Adobe Experience Manager Assets HTTP API(その他のリソース)
  • AEM Assets HTTP API でのコンテンツフラグメントのサポート(その他のリソース)

次の手順

これで、ここでの AEM ヘッドレスデベロッパージャーニーは完了です。次ができるようになったはずです。

  • AEM Assets HTTP API の基本を理解する。
  • この API でコンテンツフラグメントがどのようにサポートされているかを理解する。

次に、「実際に AEM ヘッドレスプロジェクトをライブにする方法」のドキュメントを確認して、AEM ヘッドレスジャーニーを続けてください。

その他のリソース

このページ