2016-08-23 2 views
2

J'essaye de télécharger mon schéma Swagger JSON (myapi.json) dans Atlassian Confluence en utilisant le swagger - confluence autonome tool.Comment publier la documentation de l'API Swagger dans Atlassian Confluence par programmation? (Utilisation de l'outil Confusion Swagger et de l'API Confluence REST) ​​

La CLI autonome .jar should (selon ma compréhension) fonctionnent comme ceci (utilisé this page pour les informations d'identification encodage 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" 

sortie (404 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 

Cela a causé un peu de confusion lors de la recherche d'exemples d'API REST Confluence, par exemple dans Stackoverflow, car l'API semble en avoir changé quelques-uns. Cependant, l'API REST Confluence page suggère que l'API actuelle aurait dû être la même depuis Confluence Server 5.5. Ceci est également décrit comme une exigence dans l'aperçu swagger-confluence page.

Les mêmes exigences mentionnent «Un utilisateur Confluence avec accès à l'API REST». Comment est-ce déterminé? J'utilise un utilisateur admin. J'ai trouvé la configuration générale "Activer l'API à distance" (qui semblait être activée par défaut) sous Configuration générale -> Configuration supplémentaire comme décrit dans cette section article. Le même article indique que les API XML-RPC et SOAP activées par ce paramètre sont obsolètes sur Confluence 5.5+. L'API REST est-elle activée par défaut et existe-t-il un moyen de contrôler l'utilisation?

Obtenir également des résultats un peu bizarres lorsque vous essayez d'appeler l'API REST (bien que je do obtenir des réponses, ce qui me conduit à penser que l'URL est correcte).

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

Mais appeler l'URL http://<server>:<port>/confluence/rest/api/ avec REST facile (Firefox Plugin) avec GET et fournissant userid & passe comme retour d'authentification de base 200 OK état HTTP et semble retourner mon tableau de bord Confluence (parent des espaces, de haut niveau page). Il en est de même lors de l'accès à l'URL avec un simple navigateur.

De nombreuses autres tentatives d'appel de Confluence REST API avec des méthodes documentées ont abouti à 404. Commencer à penser qu'il s'agit d'un problème d'autorisation .. Qu'est-ce que je fais de mal? Ou existe-t-il un autre moyen de produire des résultats similaires à Swagger Confluence demo?

Répondre

5

Eh bien, s'avère même si http://<server>:<port>/confluence/rest/api/ a renvoyé HTTP 200 OK, l'URL était erronée. Ce qui précède est ce que l'on appelle "URL avec contexte" (la partie/confluence /) et ce dont j'avais besoin était l'URL sans contexte (no/confluence/dans l'URL).

Voilà comment je l'ai testé l'URL de travail en recevant le 200, en-têtes (-v) et le contenu de la page réponse JSON: curl -v -u user:pass http://<server>:<port>/rest/api/content/{id}
L'ID de la page peut être vérifiée en appuyant sur (ou souris Overing) « Edition » bouton sur la page Confluence.

Et voici comment j'ai finalement eu le travail de téléchargement automatique 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"

Le Swagger Confluence tool est génial, en passant, et les résultats sont aussi bons que dans le demo!

[Edité ajouter]:
a confirmé la bibliothèque Swagger Confluence/outil (V2.2) pour travailler sur mes deux serveurs de Confluence cible, les versions 5.8.14 et 5.9.2