1

我没有在 CQ 工作过,但我正在与另一个使用 CQ 的团队合作,因此需要知道 CQ 是否支持 REST 命令(类似于下面使用 CURL 完成的操作)?我需要通过 HTTP 请求从 CQ 调用外部 REST Web 服务。

注意:我已经向 CQ 团队提出了这个问题,但还没有得到答案,因此想到了在这个论坛上查看..

curl -X PUT -H 'Content-type: application/json' -d '{"period": 300,"type": "crawl","start_time": "2011-03-18T12:10:32-0700","active": true}' http://localhost:8888/api/collections/collection1/datasources/8/schedule
4

3 回答 3

4

Curl 是一个命令行 HTTP 客户端,而 CQ 基于 Apache Sling 框架,支持 RESTful HTTP 请求,所以答案是:是的,您可以使用 curl 来创建、读取、更新和删除 CQ 存储库中的内容。Sling 文档提供了有关此主题的全面信息。

请在下面找到一些示例:

创建新资源

curl -u admin:admin -Ftitle="some title" -Ftext="some content" http://localhost:4502/tmp/new_resource

以 JSON 或 XML 格式读取现有资源

curl -u admin:admin http://localhost:4502/tmp/new_resource.json
curl -u admin:admin http://localhost:4502/tmp/new_resource.xml

更新现有资源

curl -u admin:admin -Ftitle="new title" http://localhost:4502/tmp/new_resource

删除资源

curl -u admin:admin -X DELETE http://localhost:4502/tmp/new_resource
于 2013-10-15T20:02:33.910 回答
4

正如您所说的“从 CQ 调用外部 REST Web 服务”,看起来您希望在 CQ 中运行的代码通过 HTTP 向另一台服务器发出请求。

如果正确,您可以使用http://hc.apache.org/中的 HTTP 客户端,例如,它在 CQ 中开箱即用。Apache Sling 集成测试代码广泛使用它,例如参见https://svn.apache.org/repos/asf/sling/trunk/launchpad/integration-tests下的测试

您还可以在 CQ 中使用任何 HTTP 或 REST 客户端库,前提是该库对 OSGi 友好。其中一些非常容易,因为它们是作为 OSGi 包提供的,而其他一些则需要更多的初始组装。

于 2013-10-18T07:14:11.833 回答
0

是的,您可以使用 cURL,但是,这当然并不意味着您应该使用此用例。cURL 通常用于使用 Jenkins、Bamboo 或同等工具进行持续交付自动化,或者通过 puppet 自动建立新服务器。

它旨在作为生产环境的管理工具,而不是从 JCR 接收/提供数据。

如果要公开 cURL,则需要考虑谁可以访问它,以及在什么身份验证级别。另请记住,您是以明文形式发送管理员用户名和密码。至少,您应该使用 SSL 证书来验证请求。

解决此问题的另一种方法是通过发布到 sling servlet。这样,您可以验证通过的交易,并通过更标准的方法进行身份验证,并为您提供更高程度的控制。

于 2013-10-16T12:42:23.950 回答