将Adobe AEM捆绑包作为restful webservices展示

时间:2017-01-26 15:52:53

标签: java rest aem

我创建了一个Adobe aem包。我想把它作为一个宁静的网络服务公开。我怎么能这样做。我看到有关于使用第三方休息服务的解释,但没有足够的信息来说明如何将您自己的AEM捆绑包作为休息服务公开。

3 个答案:

答案 0 :(得分:1)

公开适当的REST API本身就是一个挑战。我不打算在这里详述,因为网上有很多优秀的资料。只需google for REST和HATEOAS。 Leonard Richardson和Michael Amundsen撰写的 RESTful Web API 一书也很好地描述了这个主题。

那就是说,我不确定将 AEM软件包作为REST服务公开的意思,但它可能需要花费大量的设计工作。

一个OSGi包(我假设你的意思是 AEM bundle (sic!))可能会暴露许多OSGi 服务,每个都有一套单独的可用的方法。

虽然技术上可以在OSGi服务(具有自己的API,基本上是一组Java方法,由OSGi环境中的其他组件调用)和RESTful Web服务(其超媒体驱动的API可用)之间绘制并行通过HTTP),两种服务类型的设计约束完全不同。您不能只使用RESTful Web服务公开 OSGi服务。

您需要做的是设计RESTful Web API并使用您拥有的OSGi包备份它。

这样做的一种方法是创建一些Sling Servlets。这些servlet本身就是OSGi组件,因此可以提取bundle已经暴露的OSGi服务。

我无法知道您的API应该做什么,但如果是关于在Content Repository中存储数据,您应该记住Sling本身是围绕REST原则构建的。使用OOTB servlets and appropriately composed forms(超媒体控件)可以实现您想要实现的目标。

答案 1 :(得分:1)

由于AEM构建于 REST 架构概念之上,因此它通过Servlet公开Restful端点。您可以使用默认的SlingServlet(如GET / POST方法)或通过扩展SlingAllMethodsServlet(即接受GET或POST的Sling Servlet)编写自己的Servlet

能够执行REST请求的其他客户端可以通过执行GET或POST向您的AEM(调用您的AEM Servlet)发送REST请求。

有关使用默认吊索GET Servlet 的OOTB内容的示例JSON表示,可以通过以下网址看到,它会呈现JSON格式的内容,其子级别(深度内容)基于selector

http://localhost:4502/cf#/content/geometrixx-outdoors/en/men/coats.json
http://localhost:4502/content/geometrixx-outdoors/en/men/coats.1.json

从客户端有多种方法可以调用这些Servlet,如AJAX,JAVA SWING应用程序,HTTP FORM Post等。

以下文章中显示了一些示例。 AJAX CALL TO SERVLETUSING .net call to AEMUsing AEM POST CALL

〜希望有所帮助

答案 2 :(得分:0)

如果在servlets包下的核心项目中创建一个类,则可以使用注释定义一个restful服务:

@SlingServlet(paths = "/bin/pagesutils/importservlet", methods = "POST")

也宣告方法和路径。 请记住在调度程序配置中允许servlet的路径。

相关问题