如何使用sling REST api和curl在AEM中创建资源映射节点

时间:2015-06-17 02:05:53

标签: curl aem sling

我正在尝试使用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

2 个答案:

答案 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