Sling Model Exporter について

Apache Sling Models 1.3.0 では Sling Model Exporter が導入されています。これは、Sling Model オブジェクトをカスタム抽象化にエクスポートまたはシリアル化するエレガントな方法です。この記事では、Sling Models を使用して HTL スクリプトを入力する従来のユースケースと、Sling Model Exporter フレームワークを利用した Sling Model の JSON へのシリアル化を並置します。

従来の Sling モデル HTTP リクエストフロー

Sling Models の従来のユースケースは、リソースまたはリクエストのビジネス抽象化を提供することです。これにより、ビジネス機能にアクセスするためのインターフェイスが HTL スクリプト(以前の JSP)に提供されます。

一般的なパターンは、AEM コンポーネントまたはページを表す Sling Models を開発し、Sling Model オブジェクトを使用して HTL スクリプトにデータをフィードし、HTML の最終結果をブラウザーに表示することです。

Sling モデル HTTP リクエストフロー

Slingモデルリクエストフロー

  1. AEM のリソースに対して HTTP GET リクエストが行われます。

    例:HTTP GET /content/my-resource.html

  2. リクエストリソースの sling:resourceType に基づいて、適切なスクリプトが解決されます。

  3. スクリプトは、リクエストまたはリソースを目的の Sling Model に適合させます。

  4. スクリプトは Sling Model オブジェクトを使用して HTML レンディションを生成します。

  5. スクリプトで生成された HTML は、HTTP 応答で返されます。

Sling Model は HTL を介して簡単に利用できるため、この従来のパターンは HTML を生成するコンテキストでうまく機能します。JSON や XML など、より構造化されたデータを作成する方が、HTL が自然にこれらの形式の定義に適用されないので、はるかに退屈な作業です。

Sling Model Exporter HTTP リクエストフロー

Apache Sling Model Exporter には、「通常の」Sling Model オブジェクトを JSON に自動的にシリアル化する Sling 提供の Jackson エクスポーターが付属しています。Jackson エクスポーターは、設定が可能な状態で、その中核では Sling Model オブジェクトを生成し、JSON キーとして「getter」メソッドを使用し、JSON 値として getter 戻り値を使用して JSON を生成します。

Sling Models の直接シリアル化により、従来の Sling Model リクエストフロー(上記を参照)を使用して作成された HTML レスポンスを使用して通常の Web リクエストを処理できるだけでなく、Web サービスまたは JavaScript アプリケーションで使用できる JSON レンディションを公開することもできます。

Sling モデルエクスポーター HTTP リクエストフロー

このフローは、提供された Jackson エクスポーターを使用した JSON 出力の生成に関するフローを記述します。 カスタムエクスポーターの使用は、同じフローに従いますが、その出力形式で行います。

  1. Sling Model のエクスポーターに登録されたセレクターと拡張機能を使用して、AEM のリソースに対して HTTP GET リクエストが行われます。

    例:HTTP GET /content/my-resource.model.json

  2. Sling は、リクエストされたリソースの sling:resourceType、セレクター、および拡張機能を、動的に生成された Sling エクスポーターサーブレットに解決します。このサーブレットは、エクスポーターで Sling Model にマッピングされます。

  3. 解決された Sling エクスポーターサーブレットは、リクエストまたはリソースから適応された Sling Model オブジェクトに対して Sling Model Exporter を呼び出します(Sling Models adaptables によって決定される)。

  4. エクスポーターは、エクスポーターオプションとエクスポーター固有の Sling モデルアノテーションに基づいて Sling Model をシリアル化し、結果を Sling エクスポーターサーブレットに返します。

  5. Sling エクスポーターサーブレットは、HTTP レスポンスで Sling Model の JSON レンディションを返します。

NOTE
Apache Sling プロジェクトは Sling Models を JSON にシリアル化する Jackson エクスポーターを提供しますが、エクスポーターフレームワークはカスタムエクスポーターもサポートします。例えば、プロジェクトは、Sling Model を XML にシリアル化するカスタムエクスポーターを実装できます。
NOTE
Sling Model Exporter は Sling Models を シリアル化 ​するだけでなく、それらを Java オブジェクトとして書き出しすることもできます。他の Java オブジェクトへの書き出しは、HTTP リクエストフローで役割を果たさないので、上の図には表示されません。

サポート資料

recommendation-more-help
c92bdb17-1e49-4e76-bcdd-89e4f85f45e6