2016-03-23 9 views
-1

ネイティブモバイルアプリの要件の1つは、運用中に簡単に変更できるconfig JSONを取得することです。例えば、我々のアプリでは、我々はビジネスが可能に望んでいる機能、無効またはベースURLのリストを含むJSONレスポンスを返すURLを打つだろう。AEMのJSONレスポンスをGETする

https://ourwebsite.com/mobile_config/

応答

をGET
{ 
    "enableFeatureA": true, 
    "enableFeatureB": false, 
    "baseUrls": [ 
     "foo", 
     "bar" 
    ] 
} 

実行時に構成可能であるという要件を満たすために、公開機能を備えたコンテンツ管理システムを使用する予定です。私たちは最近、新しいパブリッシングツールとしてAEMを検討してきました。私の考えは、JSONファイルをAEMコンテンツマネージャに保存することです.GET要求がURLに送信されると、バックエンドはJSONファイルを読み取り、 'application/json'コンテンツタイプとして返​​します。しかし、AEMを使用してリクエストを行う際に、JSONファイルの内容を返す結果を得るための明白な方法が見つかりません。

AEMにはかなり新しいので、内容を読むためのjspファイルを作成するだけです。しかし、私はどのようにそれを返すのですか?どのように 'ルート'を管理するのですか?テンプレートを設定する必要はありますか?これが最善のアプローチですか?

いずれかのガイドが評価されています。

+0

あなたはhttp://blogs.adobe.com/dekesmith/2012/05/22/place-simple-html-and-image-files-([AEM]から静的ファイルを提供することができますonline-with-crx-and-cq /)を使用します。しかし、より良い解決策は、データをCMSに保存して[サーブレットを使用して]その場でJSONを生成することです(http://blogs.adobe.com/aaa/2012/09/cq-tips-and-tricks -1-how-to-define-a-slingservlet-cq5-5-5-6.html)。 – anotherdave

答えて

0

AEMは拡張子として.jsonの使用を予約しています。それをJSON形式のコンテンツのRESTfulなビューに使用します。 filename.fooのような別のファイル拡張子を使って運が良かったかもしれませんが、これを修正するためにDispatcherを構成しない限り、おそらく間違ったMIMEタイプが返されます。これはおそらく最も配慮したアプローチではありません。

つまり、.jsonファイルをDAMにアップロードすると、期待通りの結果が得られません。 /content/xyz/abc.jsonのようなパスになりますが、AEM JSONコードでレンダリングし、ファイルではなくデータストアからプロパティを取得します。

AEM JSONの出力をオフにすることはできますが、Security Checklistに記載されているように問題が発生する可能性があります。それだけでなく、ほとんどの場合、いつもDispatcher configurationでブロックされる傾向があります(ローカルポリシーに応じて)。

DispatcherがJSON要求を許可している(またはこれを安全に許可できる)と仮定すると、ページまたはコンポーネントはcreate a JSON.jspになり、JSONデータはプロパティとして保持されます。これはJSONが編集ダイアログに干渉する可能性があるため、オーサリングインターフェースにも副作用をもたらす可能性があります。

私は、最良の選択肢は、static replicationを使用してファイルを静的Webサーバーに公開することです。これは、個別のレプリケーションキューとして実行されます。お手伝いをする関連の質問hereがあります。

0

私は最近あなたが求めているものとほぼ同じことをしました。スタンドアロンの角型アプリケーションの特定の機能をランタイムオーサリングできるように、featureToggling AEMコンポーネントを作成しました。角度アプリケーションは、アプリケーションが初期化し、保存された値に基づいて機能を有効/無効にすると、私のfeatureToggleコンポーネント用に保存されたJSONコンテンツを探します。

コンポーネント自体は、複数のフィーチャタイプをトグルスイッチで追加してオン/オフを切り替えることができるマルチフィールドです。 JSON for ALL AEMページは、実際には.infinity.jsonをURLの末尾に追加することで公開されます。私の角型アプリは単に初期化時にJSONを読み込んで解釈し、次にそのアプリの機能を表示/非表示にします。

EG:http://[mysite]/[featureTogglePagename].infinity.json