8

我正在尝试使用swagger - confluence独立工具将我的 Swagger JSON 模式 (myapi.json) 上传到 Atlassian Confluence 中。

独立的 CLI .jar应该(根据我的理解)像这样运行(将此页面用于凭据 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页面建议当前的 API 自 Confluence Server 5.5 以来应该是相同的。这也被描述为 swagger-confluence 概述页面中的要求。

相同的要求提到“可以访问 REST API 的 Confluence 用户”。这是如何确定的?我正在使用管理员用户。我在通用配置 -> 进一步配置下找到了通用的“启用远程 API”配置(这似乎是默认启用的),如本文所述。同一篇文章说,此设置启用的 XML-RPC 和 SOAP API 在 Confluence 5.5+ 上已弃用。REST API 是否默认启用,是否有控制使用的方法?

尝试调用 REST API 时也会得到一些奇怪的结果(尽管我确实得到了响应,所以这让我认为 URL 是正确的)。

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

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

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

4

1 回答 1

7

好吧,结果即使http://<server>:<port>/confluence/rest/api/返回 HTTP 200 OK,URL 也是错误的。 以上就是所谓的“带上下文的 URL”(/confluence/ 部分),而我需要的是没有上下文的 URL(URL 中没有 /confluence/)。

以下是我通过接收 200、标题 (-v) 和页面内容作为 JSON 响应来测试 URL 工作的方法: curl -v -u user:pass http://<server>:<port>/rest/api/content/{id}
可以通过按下(或将鼠标悬停在)Confluence 页面上的“编辑”按钮来检查页面 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工具很棒,而且结果和演示中的一样好!

[编辑添加]:
确认 Swagger Confluence 库/工具 (v2.2) 可以在我的目标 Confluence 服务器版本 5.8.14 和 5.9.2 上工作

于 2016-10-04T07:50:05.113 回答