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

2024-02-25

我正在尝试使用以下命令将我的 Swagger JSON 架构 (myapi.json) 上传到 Atlassian Confluence 中:swagger https://cloud.slkdev.net/swagger-confluence/-合流 https://github.com/starlightknight/swagger-confluence独立的tool https://cloud.slkdev.net/artifactory/ext-release-local/net/slkdev/swagger/confluence/swagger-confluence-cli-all/2.2-RELEASE/swagger-confluence-cli-all-2.2-RELEASE.jar.

独立 CLI .jarshould https://cloud.slkdev.net/swagger-confluence/cli/(根据我的理解)这样操作(使用this http://www.freeformatter.com/base64-encoder.html凭证 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 APIpage https://developer.atlassian.com/confdev/confluence-server-rest-api建议当前的 API 自 Confluence Server 5.5 以来应该是相同的。这也被描述为 swagger-confluence 概述中的一个要求page https://cloud.slkdev.net/swagger-confluence/.

相同的要求提到“有权访问 REST API 的 Confluence 用户”。这是如何确定的?我正在使用管理员用户。我在常规配置 -> 进一步配置下找到了常规的“启用远程 API”配置(似乎默认启用),如此处所述article https://confluence.atlassian.com/doc/enabling-the-remote-api-150460.html。同一篇文章称,此设置启用的 XML-RPC 和 SOAP API 在 Confluence 5.5+ 上已弃用。 REST API 是否默认启用?是否有办法控制使用情况?

尝试调用 REST API 时也会得到一些奇怪的结果(尽管我do得到回复,这样我就认为 URL 是正确的)。

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

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

还有许多其他调用 Confluence REST 的尝试API https://docs.atlassian.com/atlassian-confluence/REST/5.8.14/使用记录的方式导致 404。开始认为这是一个授权问题..我做错了什么?或者是否有另一种方法可以产生类似于 Swagger Confluence 的结果demo https://confluence.slkdev.net/display/DEMO/%5BS%5D+Swagger+Pet+Store?


好吧,事实证明即使http://<server>:<port>/confluence/rest/api/返回 HTTP 200 OK,网址错误。上面是所谓的“带有上下文的 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"

招摇汇合tool https://cloud.slkdev.net/swagger-confluence/cli/顺便说一句,非常棒,而且结果和在中一样好demo https://confluence.slkdev.net/display/DEMO/%5BS%5D+Swagger+Pet+Store!

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐