【问题标题】:How to create a resource mapping node in AEM using sling REST api and curl如何使用 sling REST api 和 curl 在 AEM 中创建资源映射节点
【发布时间】:2023-04-01 16:14:01
【问题描述】:

我正在尝试使用 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 感到困惑

任何帮助将不胜感激 谢谢

-阿兰

【问题讨论】:

    标签: curl aem sling


    【解决方案1】:

    诀窍是发布到/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 尚不存在时有效,否则您可以在树的下方使用相同的技巧。

    【讨论】:

    • 感谢伯特兰的回答。对于我的特定用例,我需要在 map.publish.prd 下创建多个节点。前任。 prd.rb.mysite.ca、prd.rb.yoursite.ca 等。我想我可以采取一种方法,即使用第一次调用在 /tmp 节点下创建节点,然后将其移动到 map.publish.prd 下与第二次通话。你怎么看?
    • 您好 Bertrand,这是我解决此问题的方法。
    • Bertrand,这是我们找到的解决方法。该脚本使用第一次调用在 /tmp 下创建节点,如 curl -X POST -u admin:admin -F"jcr:primaryType=sling:Mapping" -F":name=" http://localhost:4502/tmp/my-temp-site。从那里它可以根据需要在 my-temp-site 下添加其他节点,并进行更多调用。当脚本使用 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-site 将其移动到它的最终休息位置。我已经对其进行了测试,到目前为止它对我们有用。
    • 上面的create调用有错误。它应该是curl -X POST -u admin:admin -F"jcr:primaryType=sling:Mapping" http://localhost:4502/tmp/my-temp-site。那里不需要 -F":name="
    • 您的解决方法在我看来不错 - 只需确保为临时节点使用唯一名称。
    【解决方案2】:

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

    curl -X POST -u admin:admin -F"jcr:primaryType=sling:Mapping" http://localhost:4502/tmp/my-temp-site.

    从那里,脚本可以根据需要在 my-temp-site 下添加其他节点,并进行更多 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-site

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

    就像@bertrand 提到的那样,我们将为 /tmp/my-temp-site 节点的名称添加一个时间戳,以使其唯一并避免冲突

    -阿兰

    【讨论】:

      猜你喜欢
      • 2020-03-30
      • 2016-11-14
      • 1970-01-01
      • 2021-11-30
      • 2019-04-15
      • 2017-06-02
      • 2016-12-31
      • 1970-01-01
      • 2018-07-10
      相关资源
      最近更新 更多