Apache Sling如何在CQ / AEM中作为RESTful Web框架工作?

时间:2015-11-24 14:53:50

标签: rest cq5 aem

我需要了解AEM中Apache Sling的概念。 AEM文档说 Apache Sling可以被描述为RESTful Web框架,而Apache Sling是RESTful框架,用于通过http协议访问Java内容库

我使用sling api来访问JCR节点/属性。我真的不知道这里使用的是什么。任何人都可以告诉Apache Sling如何在CQ / AEM中作为RESTful Web框架工作吗?

2 个答案:

答案 0 :(得分:3)

我理解它的方式,调用框架RESTful有点牵强。如果框架允许您遵循REST的定义约束,则可以使用框架构建RESTful应用程序。同时,无论框架如何,都可能违反它们。因此,无论您的工具如何“RESTful”,您最终都会得到一个与REST无关的应用程序。

对于Sling,您可以轻松创建Servlet,指定它应该使用GET方法并让它修改存储库的状态,违反底层HTTP协议的语义。

我认为在您提到的Adobe文档中它们的含义是默认servlet的行为方式与HTTP the way Thomas explained in his answer一致。

但是,与底层协议保持一致似乎不足以调用API RESTful。例如,我真的不知道Sling(单独考虑)如何使用 HATEOAS Hypertext作为应用程序状态引擎)。 You need to drive the application state using hypermedia。如果我们将Sling与CRXDE结合起来对我来说更有意义,CRXDE为资源操作提供超媒体控制。

对于AEM本身,我看到了a presentation earlier this year by none other than Roy Fielding himself about REST in AEM,他提出的观点是AEM是RESTful,因为它可以像网站一样使用。

  • 可导航
  • 它使用超文本(由浏览器解释)作为应用程序状态的引擎
  • 通过表达交换来操纵资源
  • 访问方法(由底层协议定义,在本例中为HTTP)对所有资源具有相同的语义。

它实际上是一个可用于内容管理的网站(以及更多)。它可以由客户端(浏览器)使用,只需转到欢迎页面并按照超链接,解释按需检索的代码,无需进行带外通信(如阅读文档,手工构建URL和等)

请注意,这个答案是我自己对AEM和Sling文档以及Roy Fielding的帖子和演示中发现的信息的解释,并且它绝不会得到Adobe或Roy Fielding本人的认可或批准;)

答案 1 :(得分:1)

您是否阅读过Apache Sling的文档?或者你究竟是什么问题? 无论如何,Sling是与JCR一起为CQ开发的。然后两者都提交给Apache(Jackrabbit作为JCR的参考实现)。 Sling是RESTful,因为它不使用会话(创作时除外)来提供存储在JCR中的内容。它使用主要的HTTP协议,主要是GET和POST,但也可以使用PUT和DELETE。您可以使用所谓的选择器和扩展来为相同的内容提供不同的视图。最常见的是HTML,JSON和XML。