我需要使用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。用于创建新页面的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将创建新页面。
编辑添加:
另请参阅下面的评论,了解如何将页面创建为另一个现有页面的子页面,而不是仅仅位于空间的顶层。
不是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' \...