如何使用REST API在Confluence中创建新页面? [关闭]

问题描述 投票:23回答:2

我需要使用rest api在confluence中创建新的wiki页面的工作示例。我更喜欢在特定空间和特定页面下创建新页面。我阅读了他们的api文档,看了几个他们的例子,但仍然很短。

以下是他们在网站上的示例

curl -u admin:admin -X POST -H 'Content-Type: application/json' -d'{"type":"page","title":"new page","space":{"key":"TST"},"body":{"storage":{"value":"<p>This is a new page</p>","representation":"storage"}}}' http://localhost:8080/confluence/rest/api/content/ | python -mjson.tool

我尝试使用我的空间名称,新标题并将URL更改为mysite / rest / api / content并返回内容基本上是html页面,说页面不存在或页面存在但您没有权限。我已经确认我可以访问confluence wiki并可以使用我的凭据创建新的wiki。

还不清楚的是,在上面的示例中,如何调用创建页面的特定api?它没有任何意义。

类似的问题在他们的论坛上被问到,但没有合理的答案https://answers.atlassian.com/questions/149561/simple-confluence-rest-api-usage-what-am-i-missing

(我想我的最终目标是能够自动在汇合处创建新的wiki页面。如果有必要的话,我可以放弃汇编REST API到其他解决方案。

confluence confluence-rest-api
2个回答
28
投票

我怀疑你没有使用足够新版的Confluence。用于创建新页面的REST API是在Confluence 5.5(8天前发布)中引入的。 API文档已版本化,您应始终使用与Confluence版本对应的版本。 5.5 API docs include the page creation API you need,但旧版本没有。您可以更改上述URL中的版本,以获得与Confluence版本匹配的API版本。

Confluence 5.4和Prior还为REST API使用了不同的根前缀(/ rest / prototype / 1 / content),这是获取页面未找到错误的一个可能原因。

Atlassian网站上的示例也令人困惑,因为它在URL中包含一个额外的“/ confluence”,只有在Confluence设置了上下文路径时才需要。如果您使用Confluence 5.5+,这也可能导致页面找不到错误(尽管您的帖子表明您已经为此进行了更正)。

此外,您需要告诉Confluence您正在使用adding a special os_authType query parameter的基本身份验证方法。

以下示例适用于Confluence 5.5(不要忘记根据需要更改端口和空格键)。

为了安全起见,我还在Accept标题中添加了适当的内容类型,尽管在实践中似乎不需要这样做。

curl -v -u admin:admin -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d'{"type":"page","title":"new page","space":{"key":"ATTACH"},"body":{"storage":{"value":"<p>This is a new page</p>","representation":"storage"}}}' "http://localhost:8090/rest/api/content/?os_authType=basic"

要回答上一个问题,创建页面的特定API由URL本身和请求方法确定。例如,在“/ rest / api / content”上执行GET将获取现有页面(给定适当的查询参数),而执行POST将创建新页面。

编辑添加:

另请参阅下面的评论,了解如何将页面创建为另一个现有页面的子页面,而不是仅仅位于空间的顶层。


0
投票

不是REST api,而是我把它放在一起的工作。试试这个:

将页面作为子页面移动

curl -X GET \
'<your-confluence-URL>/pages/movepage.action?pageId=<page-to-be-moved-pageId>&spaceKey=<target-space-key>&targetTitle=<target-title-of-parent-page>&position=append' \
-H 'authorization: Basic <encoded-username-password>' \ 
-H 'x-atlassian-token: no-check'

将页面移动为空间中的顶级页面

curl -X GET \
'<your-confluence-base-URL>/pages/movepage.action?pageId=<page-to-be-moved-pageId>&spaceKey=<target-space-key>&position=topLevel' \...
© www.soinside.com 2019 - 2024. All rights reserved.