来自AEM的GET JSON响应

时间:2016-03-23 03:29:55

标签: android ios aem

我们的原生移动应用程序的一个要求是检索可在生产过程中轻松更改的配置JSON。例如,在我们的应用程序中,我们将点击一个返回JSON响应的URL,其中包含业务要启用,禁用或基本URL列表的功能:

获取 https://ourwebsite.com/mobile_config/

RESPONSE

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

为了满足在运行时可配置的要求,我们计划使用具有发布功能的内容管理系统。我们最近一直在研究AEM作为我们的新发布工具。我的想法是将JSON文件保存到AEM内容管理器中,当向URL发出GET请求时,后端将读取JSON文件并将其作为“application / json”内容类型返回。但是,在使用AEM发出请求时,我找不到任何明显的方法来实现返回JSON文件内容的结果。

作为AEM的新手,我的猜测只是创建一个jsp文件来读取内容。但是我该如何归还呢?如何管理“路线”?我需要设置模板吗?这是最好的方法吗?

感谢任何指南。

2 个答案:

答案 0 :(得分: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可能有所帮助。

答案 1 :(得分:0)

我最近做了一些与你要求的完全相同的事情。我创建了一个featureToggling AEM组件,以允许运行时创作独立角度应用程序的特定功能。角度应用程序查看为我的featureToggle组件存储的JSON内容,因为应用程序根据存储的值初始化和启用/禁用功能。

组件本身是一个多字段,允许我使用切换开关添加多个要素类型以打开或关闭它们。实际上通过将.infinity.json附加到url的末尾来显示所有AEM页面的JSON。我的角度应用程序只需在初始化时读取并解释JSON,然后显示/隐藏应用程序的功能。

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