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

0g0grzrc  于 2023-06-29  发布在  其他
关注(0)|答案(2)|浏览(156)

我正在尝试使用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 Not Found Not Found

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中的一项要求。
相同的要求提到“具有REST API访问权限的Confluence用户”。这是如何确定的?我用的是admin用户。我在General Configuration -> Further Configuration下找到了通用的“Enable Remote API”配置(似乎默认启用),如本文article所述。同一篇文章说,该设置启用的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  
...

但是使用REST Easy(Firefox Plugin)和GET调用URL http://<server>:<port>/confluence/rest/api/并提供userid & pass作为Basic Authentication返回200 OK HTTP状态,并且似乎返回我的Confluence Dashboard(parent of the spaces;顶级页面)。同样的情况也发生在访问URL时,只是浏览器。
此外,许多其他尝试调用Confluence REST API的方法都导致了404。开始觉得这是授权问题。我做错了什么?或者有没有其他方法可以产生类似于Swagger Confluence demo的结果?

yvt65v4c

yvt65v4c1#

好吧,即使http://<server>:<port>/confluence/rest/api/返回HTTP 200 OK,**URL是错误的。**上面是所谓的“带有上下文的URL”(/confluence/部分),我需要的是没有上下文的URL(URL中没有/confluence/)。
下面是我如何通过接收200,Headers(-v)和页面内容作为JSON响应来测试URL的工作情况:curl -v -u user:pass http://<server>:<port>/rest/api/content/{id}
页面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 X1 E0 F1 X太棒了,结果和X1 E1 F1 X中一样好!
[编辑补充]:
已确认Swagger Confluence库/工具(v2.2)在我的目标Confluence服务器版本5.8.14和5.9.2上都可以工作

tp5buhyn

tp5buhyn2#

对不起,有人可以上传swagger-confluence-cli-all-2.2-RELEASE.jar到某处吗?

相关问题