W przypadku niektórych interfejsów API REST napisanych w PHP poproszono mnie o utworzenie dokumentacji Swagger , a ponieważ nie znałem łatwego sposobu dodawania adnotacji do tych istniejących interfejsów API i tworzenia takiej dokumentacji, użyłem tego edytora do wygenerowania na razie niektórych.
Zapisałem pliki JSON i YAML utworzone za pomocą tego edytora, a teraz muszę stworzyć ostateczną interaktywną dokumentację Swaggera (to stwierdzenie może brzmieć naiwnie i niejasno).
Czy ktoś może mi powiedzieć, jak mogę przekonwertować plik specyfikacji Swagger JSON na rzeczywistą dokumentację Swaggera?
Jestem na platformie Windows i nic nie wiem o Ant / Maven.
yaml
swagger
swagger-php
Salil
źródło
źródło
Odpowiedzi:
Nie byłem zadowolony,
swagger-codegen
gdy szukałem narzędzia do tego, więc napisałem własne. Spójrz na bootprint-swaggerGłównym celem w porównaniu do tego
swagger-codegen
jest zapewnienie łatwej konfiguracji (chociaż będziesz potrzebować nodejs). I powinno być łatwe dostosowanie stylizacji i szablonów do własnych potrzeb, co jest podstawową funkcjonalnością bootprint -projektuźródło
spectacle
generuje znacznie lepiej wyglądającą dokumentację zSpróbuj użyć redoc-cli .
Używałem bootprint-OpenAPI przez którą został wytwarzającą kilka plików (
bundle.js
,bundle.js.map
,index.html
,main.css
imain.css.map
), a następnie można przekształcić go w jednym.html
pliku przy użyciu HTML-inline wygenerować prostyindex.html
plik.Potem stwierdziłem, że redoc-cli jest bardzo łatwy w użyciu, a wynik jest naprawdę niesamowity, pojedynczy i piękny plik index.html .
Instalacja :
npm install -g redoc-cli
Użycie :
redoc-cli bundle -o index.html swagger.json
źródło
npx redoc-cli ...
jest bardziej niezawodne.Spójrz na ładny łup
To ma
Patrzyłem na Swagger Editor i myślałem, że może wyeksportować panel podglądu, ale okazało się, że nie może. Więc napisałem własną wersję tego.
Pełne ujawnienie: jestem autorem narzędzia.
źródło
allOf
w dokumencie powodujeundefined
, nawet w najprostszych scenariuszach („scalenie” pojedynczego obiektu, co jest równoznaczne zallOf
całkowitym nieużywaniem ).allOf
udostępniliśmy Ci funkcję. Sprawdź to.Wszystko było zbyt trudne lub źle udokumentowane, więc rozwiązałem to za pomocą prostego skryptu swagger-yaml-to-html.py , który działa w ten sposób
python swagger-yaml-to-html.py < /path/to/api.yaml > doc.html
To jest dla YAML, ale modyfikacja go do pracy z JSON jest również trywialna.
źródło
Zobacz projekt swagger-api / swagger-codegen na GitHub; projekt README pokazuje, jak używać go do generowania statycznego kodu HTML. Zobacz dokumentację Generowanie statycznego interfejsu API HTML .
Jeśli chcesz wyświetlić plik swagger.json, możesz zainstalować interfejs użytkownika interfejsu Swagger i uruchomić go. Wystarczy wdrożyć go na serwerze internetowym (folder dist po sklonowaniu repozytorium z GitHub) i wyświetlić interfejs użytkownika Swagger w przeglądarce. To aplikacja JavaScript.
źródło
Spędziłem dużo czasu i wypróbowałem wiele różnych rozwiązań - w końcu zrobiłem to w ten sposób:
<html> <head> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/swagger-ui.css"> <script src="//unpkg.com/swagger-ui-dist@3/swagger-ui-bundle.js"></script> <script> function render() { var ui = SwaggerUIBundle({ url: `path/to/my/swagger.yaml`, dom_id: '#swagger-ui', presets: [ SwaggerUIBundle.presets.apis, SwaggerUIBundle.SwaggerUIStandalonePreset ] }); } </script> </head> <body onload="render()"> <div id="swagger-ui"></div> </body> </html>
Wystarczy, że ścieżka / to / my / swagger.yaml będzie obsługiwana z tej samej lokalizacji.
(lub użyj nagłówków CORS)
źródło
Możesz również pobrać Swagger UI z: https://github.com/swagger-api/swagger-ui , pobrać folder dist, zmodyfikować index.html: zmienić konstruktora
const ui = SwaggerUIBundle({ url: ...,
w
const ui = SwaggerUIBundle({ spec: YOUR_JSON,
teraz folder dist zawiera wszystko, czego potrzebujesz i może być rozpowszechniany tak, jak jest
źródło
Spójrz na ten link: http://zircote.com/swagger-php/installation.html
Jeśli potrzebujesz dodatkowej pomocy, nie wahaj się zapytać.
źródło
Jest mały program Java, który generuje dokumenty (adoc lub md) z pliku yaml.
Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder() .withMarkupLanguage(MarkupLanguage.ASCIIDOC) .withSwaggerMarkupLanguage(MarkupLanguage.ASCIIDOC) .withOutputLanguage(Language.DE) .build(); Swagger2MarkupConverter builder = Swagger2MarkupConverter.from(yamlFileAsString).withConfig(config).build(); return builder.toFileWithoutExtension(outFile);
Niestety obsługuje tylko OpenAPI 2.0, ale nie obsługuje OpenAPI 3.0 .
źródło
W przypadku Swagger API 3.0 generowanie kodu klienta Html2 z internetowego edytora Swagger działa świetnie!
źródło
Zauważyłem, że to narzędzie o nazwie api-html jest bardzo przydatne. Generuje niesamowity interfejs użytkownika HTML5 z wieloma możliwościami.
Istnieją opcje generowania online lub za pośrednictwem narzędzia CLI .
Oto link do wersji demonstracyjnej opartej na „api-html”: Pets-demo
źródło