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

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

公开适当的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服务(通过HTTP提供其超媒体驱动的API)之间的并行,这两种服务的设计约束完全不同。 您不能仅使用RESTful Web服务公开 OSGi服务。

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

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

我无法知道您的API应该做什么,但如果是关于在Content Repository中存储数据,您应该记住Sling本身是围绕REST原则构建的。 使用OOTB servlet和适当组合的表单 (超媒体控件),你想要实现的目标是可行的。

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

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

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

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调用SERVLET , 使用.net调用AEM , 使用AEM POST CALL

〜希望它有所帮助

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

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

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