如何在 CQ 中使用 CURL 从 JCR 中的目录下获取所有网页?

How to fetch all web pages from under a directory in JCR using CURL in CQ?

我想使用 curl 从我的 CQ 内容中的目录下(递归地)获取所有网页。有人可以帮忙吗?

Apache Sling JSON GET servlet 在 CQ 中默认启用,因此只要访问控制允许,您就可以使用 /content.tidy.N.json 等 URL 检索子树,其中 N 是所需的递归级别。

例如,

curl -s -u admin:admin http://localhost:8080/content/geometrixx.tidy.2.json

检索 /content/geometrixx 下的两层树。

如果结果包含的元素多于可配置的限制,您将收到 302 响应,其中列出了以多个较小单位提供结果的 URL。

另见 http://sling.apache.org/documentation/bundles/rendering-content-default-get-servlets.html

使用 /bin/querybuilder servlet。例如,以下命令将从 /content/geometrixx/en:

中获取所有 cq:Page 节点
curl -u admin:admin \
     "http://localhost:4502/bin/querybuilder.json?p.limit=-1&path=%2fcontent%2fgeometrixx%2fen&type=cq%3aPage"

URL本身可能不是很清楚,但是可以自动生成。为了获得这样的 URL,请打开 /libs/cq/search/content/querydebug.html 下可用的 QueryBuilder 调试器工具。然后粘贴以下 QueryBuilder 谓词:

type=cq:Page
path=/content/geometrixx/en
p.limit=-1

然后点击搜索。生成的 URL 到 JSON 结果在 JSON QueryBuilder link 下可用。有关谓词格式的更多信息,请参见 official documentation.