如何使用 XWiki REST API 创建父页面的子页面?

问题描述 投票:0回答:1

这是我在这个网站上的第一篇文章,我想让你知道英语不是我的母语。可能写的有错误请谅解。

我在尝试使用 Talend tRESTClient 组件中的 XWiki REST API 创建子页面时遇到问题。我在 XWiki 中有一个父页面,我想以编程方式在其下创建一个新的子页面。

我尝试了多种方法,包括使用具有不同 URL 变体的 POST 和 PUT 方法,但到目前为止,我还没有成功。我不断收到错误,例如 404,405 或更新父页面而不是创建新的子页面。

这是我尝试发送的页面示例(XML):

<page xmlns=\"http://www.xwiki.org\">
    <title>Page</title>
    <syntax>xwiki/2.1</syntax>
    <parent>xwiki:myspace.mypage</parent>
    <content>This is a new page</content>
</page>

以下是我尝试过的一些 URL 示例(http 请求、put 方法):

https://example.com/rest/wikis/xwiki/spaces/myspace/pages/mychildpage
https://example.com/rest/wikis/xwiki/spaces/myspace/pages/mypage
https://example.com/rest/wikis/xwiki/spaces/myspace/pages/mypage/mychildpage

这是我使用的文档的链接:(https://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/Features/XWikiRESTfulAPI)

有人使用 XWiki REST API 成功创建了子页面吗?您能否分享正确的请求格式或有关如何实现此目的的任何见解?

任何帮助或指导将不胜感激。

rest talend xwiki
1个回答
0
投票

“父”概念在 XWiki 中已被弃用。它仍然保留用于向后兼容,但您真正想要创建的是嵌套页面(即技术上也引入新子空间的子页面)。此迁移指南可能有助于更好地了解正在发生的情况:https://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/Features/ContentOrganization/NestedPagesMigration/

确保您阅读了解释如何使用 API 的文档的这一部分,尤其是教程:https://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/Features/XWikiRESTfulAPI#HUsingtheRESTfulAPI

如果不清楚文档中示例中的请求正文,您可以先执行 GET,然后在 PUT 上发送相同的负载,只需相应修改字段即可。

简单来说,URL格式为:

/wikis/{wikiName}/spaces/{spaceName}[/spaces/{nestedSpaceName}]*/pages[?start=offset&number=n]

对于您的示例,这翻译为:

放置https://example.com/rest/wikis/xwiki/spaces/myspace/spaces/mypage/spaces/mychildpage/pages/WebHome

说明:

如果嵌套页面想要有子页面,则它们不能是终端页面。这意味着您的父页面引用必须是 xwiki:myspace.mypage.WebHome(空间“myspace”、子空间“mypage”、页面“WebHome”),否则您将无法为其添加子页面。

您的子页面与此类父页面的引用将是: xwiki:myspace.mypage.mychildpage.WebHome(空间“myspace”,子空间“mypage”,子空间“mychildpage”,页面“WebHome”),在(默认)子页面也是支持更多子页面的非终端页面的情况。

注意:如果还不清楚,XWiki 中的每个空间都有一个名为“WebHome”的主页,即使它并不总是在 URL 中可见,例如“/xwiki/bin/view/Main/”与“/xwiki/bin/view/Main/WebHome”相同(这是您的实际页面)。

奖励:从技术上讲,您还可以创建终端子页面,但并不真正推荐,除非您真的知道自己在做什么。对于这种情况,您引用的是 xwiki:myspace.mypage.mychildpage (空间“myspace”,子空间“mypage”,页面“mychildpage”),但是,如上所述,它将不支持更多子项。

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.