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

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

我正在尝试使用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建议自Confluence Server 5.5以来当前的API应该是相同的。这也被描述为swagger-confluence概述page中的一个要求。

相同的要求提到“可以访问REST API的Confluence用户”。这是如何确定的?我正在使用管理员用户。我在常规配置 - >进一步配置下找到了一般的“启用远程API”配置(似乎默认启用),如本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  
...

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

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

swagger confluence confluence-rest-api
1个回答
6
投票

好吧,事实证明,即使http://<server>:<port>/confluence/rest/api/返回HTTP 200 OK,网址也是错误的。以上是所谓的“带上下文的URL”(/ confluence / part),我需要的是没有上下文的URL(URL中没有/ confluence /)。

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

以下是我最终获得自动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

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