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

如何使用sling-restapi和curl在AEM中创建资源映射节点,curl,aem,sling,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调用不再起作用

我正在尝试使用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
但我认为sling仍然被map.publish.prd搞糊涂了

任何帮助都将不胜感激 谢谢


-Alain

诀窍是发布到
/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
还不存在的情况下,这才有效,否则您可以在树的下一步使用相同的技巧。

下面是我们找到的解决方法。 该脚本使用第一个调用在/tmp下创建节点,如下所示

curl -u admin:admin -F"jcr:primaryType= sling:Mapping" http://localhost:4502/content/mynode
curl-X POST-u admin:admin-F“jcr:primaryType=sling:Mapping”http://localhost:4502/tmp/my-临时站点。

从那里,脚本可以根据需要通过更多curl调用在我的临时站点下添加额外的节点。当脚本完成对my temp site节点的修补后,它会将其移动到最后的休息位置

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站点

我们已经对它进行了测试,到目前为止它对我们有效

如@bertrand所述,我们将在/tmp/my temp站点节点的名称中添加一个时间戳,以使其唯一并避免冲突


-阿兰

谢谢贝特朗的回答。对于我的特定用例,我需要在map.publish.prd下创建多个节点。例如prd.rb.mysite.ca、prd.rb.yoursite.ca等。我想我可以采取一种方法,使用第一个调用在/tmp节点下创建节点,然后使用第二个调用将其移动到map.publish.prd下。您好,伯特兰,这是我如何解决这个问题的。伯特兰,这是我们找到的解决方法。脚本使用第一个调用在/tmp下创建节点,如下所示http://localhost:4502/tmp/my-临时站点。从那里,它可以根据需要在我的临时站点下添加更多的节点,并进行更多的调用。当脚本使用my temp site节点完成时,它会将它移动到它的最后一个静止位置,并使用下面的
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站点
。我已经对它进行了测试,到目前为止它对我们有效。上面的create调用中有一个错误。它应该是
curl-xpost-u admin:admin-F“jcr:primaryType=sling:Mapping”http://localhost:4502/tmp/my-临时站点
。不需要-F“:name=,因此您的解决方案在我看来很好-请确保为临时节点使用唯一的名称。