如何以编程方式将Swagger API文档发布到Atlassian Confluence? (使用Swagger Confluence工具和Confluence REST API)

时间:2016-08-23 14:51:44

标签: swagger confluence confluence-rest-api

我尝试使用swagger - confluence独立tool将我的Swagger JSON架构(myapi.json)上传到Atlassian Confluence。

独立CLI .jar should(根据我的理解)像这样运行(使用this页面进行凭证Base64编码):

java -jar <system path root>/swagger-confluence-cli-all-2.2-RELEASE.jar -u "http(s)://<server>:<port>/confluence/rest/api/" -b "<base64 encoded userid:password string" -a "<parent page id>" -k "<space key>" -g "true" -i "true" -s "<myschema.json>" -t "<Title for generated page>" -m "single"

输出(未找到404):

2016-08-23 15:08:12.177  INFO - [main]  n.s.s.c.s.i.SwaggerToAsciiDocServiceImpl : AsciiDoc Conversion Complete!  
2016-08-23 15:08:12.178  INFO - [main] n.s.s.c.s.i.AsciiDocToXHtmlServiceImpl   : Converting AsciiDoc to XHTML5...
io/console not supported; tty will not be manipulated   
2016-08-23 15:08:16.888  INFO - [main] n.s.s.c.s.i.AsciiDocToXHtmlServiceImpl   : XHTML5 Conversion Complete!   
2016-08-23 15:08:17.728  INFO - [main] n.s.s.c.s.i.XHtmlToConfluenceServiceImpl : Posting XHTML to Confluence...
Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 404 Not Found

在搜索Confluence REST API示例时,例如,它引起了一些混乱,例如:在Stackoverflow中,因为API似乎已经改变了一些。但是,Confluence REST API page表明当前的API应该与Confluence Server 5.5相同。这也被称为swagger-confluence概述page中的要求。

相同的要求提及&#34; A Confluence用户可以访问REST API&#34;。这是如何确定的?我使用的是管理员用户。我找到了通用&#34;启用远程API&#34;配置(默认情况下似乎已启用)在常规配置下 - &gt;进一步配置如此article中所述。同一篇文章说,在Confluence 5.5+上不推荐使用此设置启用的XML-RPC和SOAP API。是否默认启用REST API,是否有控制用法的方法?

尝试调用REST API时也会产生一些奇怪的结果(虽然我获取响应,这样我就认为URL是正确的。)

curl -v -u userid:pass http://<server>:<port>/confluence/rest/api/  
...  
HTTP/1.1 302 Found  
...

但是使用REST Easy(Firefox插件)使用GET调用URL http://<server>:<port>/confluence/rest/api/并提供userid&amp;传递为基本身份验证返回200 OK HTTP状态,似乎返回我的Confluence仪表板(空格的父级;顶级页面)。使用浏览器访问URL时也会发生同样的情况。

还有许多其他尝试以记录的方式调用Confluence REST API导致404.开始认为这是一个授权问题..我做错了什么?或者是否有另一种方法可以产生类似于Swagger Confluence demo的结果?

1 个答案:

答案 0 :(得分:5)

好吧,即使http://<server>:<port>/confluence/rest/api/返回HTTP 200确定,网址错误。 以上就是带有上下文&#34;的所谓&#34; URL (/ confluence / part)我需要的是没有上下文的URL(URL中没有/ confluence /)。

以下是我通过接收200,Headers(-v)和页面内容作为JSON响应测试URL的方法: curl -v -u user:pass http://<server>:<port>/rest/api/content/{id}
可以通过按(或鼠标悬停)&#34;编辑&#34;来检查页面ID。 Confluence页面上的按钮。

这就是我最终如何让自动Confluence上传工作:
java -jar <system path root>/swagger-confluence-cli-all-2.2-RELEASE.jar -u "http(s)://<server>:<port>/rest/api/" -b "<base64 encoded userid:password string>" -a "<parent page id>" -k "<space key>" -g "true" -i "true" -s "<myschema.json>" -t "<Title for generated page>" -m "single"

顺便说一句,Swagger Confluence tool很棒,结果和demo一样好!

[已编辑添加]:
确认Swagger Confluence库/工具(v2.2)适用于我的目标Confluence服务器,版本5.8.14和5.9.2