我正在尝试使用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的结果?