我正在尝试使用AEM 6.0中的sling api创建节点。现在我知道我可以使用像这样的curl调用轻松创建一个节点
curl -u admin:admin -F"jcr:primaryType= sling:Mapping" http://localhost:4502/content/mynode
但是如果我需要花哨并尝试创建一个名为/etc/map.publish.prd/http/prd.rb.mysite.ca的名称的资源映射节点
现在,以下curl调用不再起作用,因为部分url被视为选择器
curl -u admin:admin -F"jcr:primaryType= sling:Mapping" http://localhost:4502/etc/map.publish.prd/http/prd.rb.mysite.com
那么我该如何避免这个问题?
我也尝试使用name属性来限制url的复杂性。
curl -u admin:admin -F"jcr:primaryType=sling:Mapping" -F"name=prd.rb.mysite.com" http://localhost:4502/etc/map.publish.prd/http
但我认为吊索仍然被map.publish.prd
弄糊涂了任何帮助将不胜感激 感谢
-Alain
答案 0 :(得分:0)
诀窍是发布到/etc/*
,这会导致:name
参数按原样用于新节点的路径:
curl -u admin:admin \
-F"jcr:primaryType=sling:Mapping" \
-F:name=./map.publish.prd/http/prd.rb.mysite.ca \
http://localhost:4502/etc/*
仅当/etc/map.publish.prd
尚不存在时才有效,但除此之外你可以在树的下方使用相同的技巧。
答案 1 :(得分:0)
以下是我们找到的解决方法。 该脚本使用第一次调用在/ tmp下创建节点,如此
curl -X POST -u admin:admin -F"jcr:primaryType=sling:Mapping" http://localhost:4502/tmp/my-temp-site.
从那里开始,脚本可以根据需要在my-temp-site下添加额外的节点以及更多的curl调用。当脚本完成修改我的临时站点节点时,它会将其移动到它的最终安置位置
curl -X POST -u admin:admin -F":operation=move" -F":dest=/etc/map.publish.prd/http/prd.rb.mysite.ca" http://localhost:4502/tmp/my-tmp-site
我们测试了它,到目前为止它对我们有用。
与@bertrand一样,我们将在/ tmp / my-temp-site节点的名称中添加一个时间戳,以使其唯一并避免冲突
-Alain