如何使用 sling REST api 和 curl 在 AEM 中创建资源映射节点
How to create a resource mapping node in AEM using sling REST api and 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
那么我该如何避免这个问题呢?
我也试过使用名称 属性 来限制 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
搞糊涂了
任何帮助将不胜感激
谢谢
-阿兰
诀窍是 post 到 /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 -X POST -u admin:admin -F"jcr:primaryType=sling:Mapping" http://localhost:4502/tmp/my-temp-site.
从那里,脚本可以根据需要通过更多 curl 调用在 my-temp-site 下添加其他节点。当脚本完成对 my-temp-site 节点的修改后,它会使用 this
将其移动到它的最终位置
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 节点的名称中添加一个时间戳,以使其唯一并避免冲突
-阿兰
我正在尝试使用 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
那么我该如何避免这个问题呢?
我也试过使用名称 属性 来限制 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
搞糊涂了任何帮助将不胜感激 谢谢
-阿兰
诀窍是 post 到 /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 -X POST -u admin:admin -F"jcr:primaryType=sling:Mapping" http://localhost:4502/tmp/my-temp-site.
从那里,脚本可以根据需要通过更多 curl 调用在 my-temp-site 下添加其他节点。当脚本完成对 my-temp-site 节点的修改后,它会使用 this
将其移动到它的最终位置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 节点的名称中添加一个时间戳,以使其唯一并避免冲突
-阿兰