2016-03-23 218 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