2016-03-23 285 views
-1

我們的本機移動應用程序的一個要求是獲取可在生產期間輕鬆更改的配置JSON。例如,在我們的應用中,我們會打起來,返回包含功能的JSON響應,該企業希望啓用已禁用或基本URL列表的URL:從AEM獲取JSON響應

GEThttps://ourwebsite.com/mobile_config/

響應

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

爲了滿足在運行時可配置的要求,我們計劃使用具有發佈功能的內容管理系統。我們最近一直在研究AEM作爲我們的新出版工具。我的想法是將JSON文件保存到AEM內容管理器中,並且當對URL進行GET請求時,後端將讀取JSON文件並將其作爲「application/json」內容類型返回。但是,在使用AEM發出請求時,我找不到任何明顯的方式來實現返回JSON文件內容的結果。

作爲AEM的新手,我的猜測是創建一個jsp文件來讀取內容。但是,我該如何退還?我如何管理'路線'?我需要設置模板嗎?這是最好的方法嗎?

任何指南表示讚賞。

+0

您可以從[AEM]提供靜態文件(http://blogs.adobe.com/dekesmith/2012/05/22/place-simple-html-and-image-files-在線與-CRX-和CQ /)。一個更好的解決方案可能是將數據存儲在CMS中,並使用Servlet輕鬆生成JSON(http://blogs.adobe.com/cn/aaa/2012/09/cq-tips-and-tricks -1-如何到定義-A-slingservlet-cq5-5-5-6.html)。 – anotherdave

回答

0

AEM保留使用.json作爲擴展名;它將它用於JSON格式的內容的RESTful視圖。你可能有運氣使用不同的文件擴展名,例如filename.foo - 但它可能會給你錯誤的mimetype,除非你配置Dispatcher來解決這個問題。這可能不是最體貼的方法。

總之,如果你上傳一個.json文件到DAM中,你不會得到你所期望的。您最終會看到類似/content/xyz/abc.json的路徑 - 但它將使用AEM JSON代碼進行呈現,並從數據存儲中爲您提供屬性,而不是您的文件。

可以關閉AEM JSON輸出,但它往往會破壞Security Checklist中提到的內容。除此之外,大多數情況下它都會被阻止在Dispatcher configuration(取決於當地政策)。

假設Dispatcher確實允許JSON請求(或者您可以安全地允許)請求一個頁面或組件的create a JSON.jsp,並將JSON數據作爲屬性。這也可能在創作界面中產生副作用,因爲JSON會干擾編輯對話。

我認爲最好的選擇可能是使用static replication將文件發佈到靜態網絡服務器上。這是作爲單獨的複製隊列完成的。有一個相關的問題here可能有幫助。

0

我最近做了一些與你所問的非常相似的東西。我創建了一個featureToggling AEM組件,允許運行時編寫獨立角度應用程序的特定功能。角度應用程序查看爲我的featureToggle組件存儲的JSON內容,因爲應用程序根據存儲的值初始化並啓用/禁用功能。

該組件本身是一個多字段,允許我使用切換開關添加多個要素類型來打開或關閉它們。所有AEM頁面的JSON實際上是通過將.infinity.json附加到url的末尾來公開的。我的角應用程序只是讀取和解釋初始化JSON然後顯示/隱藏應用程序的功能。

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