Conversión de la especificación JSON de Swagger a documentación HTML


88

Para algunas API REST escritas en PHP, se me pidió que creara la documentación de Swagger , y como no conocía ninguna forma fácil de agregar anotaciones a esas API existentes y crear dicha documentación, usé este editor para generar algunas por ahora.

Guardé los archivos JSON y YAML creados con ese editor, y ahora necesito crear la documentación interactiva final de Swagger (esta declaración puede sonar ingenua y vaga).

¿Alguien puede decirme cómo puedo convertir el archivo de especificación Swagger JSON en la documentación real de Swagger?

Estoy en la plataforma Windows y no sé nada sobre Ant / Maven.


Intenté [ github.com/wordnik/swagger-ui](Swagger UI) pero no muestra mi json. la única advertencia que se muestra es "¡Esta API está usando una versión obsoleta de Swagger! Consulta github.com/wordnik/swagger-core/wiki para obtener más información".
Salil

Respuestas:


43

No estaba satisfecho swagger-codegencuando estaba buscando una herramienta para hacer esto, así que escribí la mía propia. Eche un vistazo a bootprint-swagger

El objetivo principal en comparación con swagger-codegenes proporcionar una configuración fácil (aunque necesitará nodejs). Y debería ser fácil adaptar el estilo y las plantillas a sus propias necesidades, que es una funcionalidad básica del proyecto bootprint .


9
Advertencia: A partir del 11/2016, el autor de bootprint-swagger aparentemente abandonó el proyecto. swagger-codegen todavía está bien soportado.
Brent Matzelle

22
Soy el autor y el texto dice: "Lamento decir que no podré desarrollar nuevas funciones para este proyecto en un futuro cercano. Pero: probablemente podré discutir y fusionar solicitudes de extracción, y publicar nuevas versiones ". Podría llamarlo abandonado, yo lo llamaría "en espera". También invitaré a cualquiera que esté interesado en contribuir al proyecto.
Nils Knappmeier

1
Se encontró que spectaclegenera una documentación mucho más atractiva de swagger JSON
eternalthinker

Después de mucha lucha, encontré esta herramienta muy útil: api-html
Asfandiyar Khan

57

Intenta usar redoc-cli .

Yo estaba usando bootprint-API abierta por el cual yo estaba generando un montón de archivos ( bundle.js, bundle.js.map, index.html, main.cssy main.css.map) y luego se puede convertir en un solo .htmlarchivo usando html-inline para generar un sencilloindex.html archivo.

Luego encontré redoc-cli muy fácil de usar y la salida es realmente impresionante, un único y hermoso index.html archivo .

Instalación :

npm install -g redoc-cli

Uso :

redoc-cli bundle -o index.html swagger.json

8
Esta herramienta hace realmente la salida más hermosa de todas las herramientas mencionadas.
Jakub Moravec

1
Este es el mejor de lejos en mi opinión, y dado que lo estamos creando para desarrolladores que usan computadoras de escritorio, el tamaño de salida no es un problema.
milosmns

3
El uso de un nombre ejecutable directo no siempre funciona, la ejecución por npx redoc-cli ...es más confiable.
Gatito

2
Salida muy bonita. Gracias por la sugerencia.
Sahil Jain

1
¡Esta es una herramienta increíble! Gracias Vikas profundamente por la maravillosa sugerencia hermano !! ¡Definitivamente mucho mejor y menos torpe que bootstrap-openapi!
Chaturvedi Saurabh

19

Echa un vistazo a pretty-swag

Tiene

  1. Aspecto similar al panel derecho de Swagger-Editor
  2. Filtro de búsqueda
  3. Plegado de esquema
  4. Comentarios en vivo
  5. Salida como un solo archivo html

Estaba mirando Swagger Editor y pensé que podría exportar el panel de vista previa, pero resultó que no puede. Así que escribí mi propia versión.

Divulgación completa: soy el autor de la herramienta.


1
He descubierto que pretty-swag es una herramienta sencilla e ideal, con puntos de entrada CLI y API apropiados. Mi única queja (y la que me obligó a lidiar con la complejidad de swagger-ui en su lugar) fue su incapacidad para manejar correctamente la composición / extensión del objeto. Cualquier uso de allOfen el documento produce undefined, incluso en los escenarios más simples ("fusionar" un solo objeto, equivalente a no usar allOfnada).
HonoredMule

3
Acabo de lanzar una allOffunción para ti. Echale un vistazo.
TLJ

2
No parece ser compatible con Swagger / OpenAPI V3
SeinopSys

18

Todo era demasiado difícil o estaba mal documentado, así que resolví esto con un simple script swagger-yaml-to-html.py , que funciona así

python swagger-yaml-to-html.py < /path/to/api.yaml > doc.html

Esto es para YAML, pero modificarlo para que funcione con JSON también es trivial.


¡Esto es oro puro!
zemirco

16

Vea el proyecto swagger-api / swagger-codegen en GitHub; el proyecto README muestra cómo usarlo para generar HTML estático. Consulte Generación de documentación de api HTML estática .

Si desea ver swagger.json, puede instalar la interfaz de usuario de Swagger y ejecutarla. Simplemente impleméntelo en un servidor web (la carpeta dist después de clonar el repositorio de GitHub) y vea la IU de Swagger en su navegador. Es una aplicación de JavaScript.


Gracias. Mi problema era que el swagger-ui no aceptaba la especificación 2.0. Sin embargo, esta parece la respuesta más simple, así que la aceptaré (por ahora).
Salil

Las herramientas Swagger todavía están evolucionando para 2.0. Sin embargo, descubrí que la interfaz de usuario de Swagger funciona para mis archivos 2.0 que comienzan con "swagger": "2.0",
djb

Además, desde Swagger Editor, puede exportar la especificación JSON (no como YAML sino como JSON) y la interfaz de usuario de Swagger debería poder leer eso. (Nota: swagger.json debe estar en el mismo host / puerto que la aplicación Swagger UI, o debe habilitar CORS; consulte README.md en Swagger Editor en GitHub
djb

14

Pasé mucho tiempo y probé muchas soluciones diferentes; al final, lo hice de esta manera:

<html>
    <head>    
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swagger-ui-dist@3.17.0/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>

Solo necesita tener la ruta / a / mi / swagger.yaml desde la misma ubicación.
(o use encabezados CORS)


¡Genial gracias! He usado <link rel = "stylesheet" href = " petstore.swagger.io/swagger-ui.css "> <script src = " petstore.swagger.io/swagger-ui-bundle.js "></script >
Erando

1
Encontré que esta es la mejor solución, ¡sin instalación de nada!
KurioZ7

Extramadamente útil. Ahorraste mucho tiempo.
kalpesh khule

7

También puede descargar swagger ui desde: https://github.com/swagger-api/swagger-ui , tomar la carpeta dist, modificar index.html: cambiar el constructor

const ui = SwaggerUIBundle({
    url: ...,

dentro

const ui = SwaggerUIBundle({
    spec: YOUR_JSON,

ahora la carpeta dist contiene todo lo que necesita y se puede distribuir como está


2

Eche un vistazo a este enlace: http://zircote.com/swagger-php/installation.html

  1. Descargue el archivo phar https://github.com/zircote/swagger-php/blob/master/swagger.phar
  2. Instale Composer https://getcomposer.org/download/
  3. Hacer composer.json
  4. Clonar swagger-php / biblioteca
  5. Clonar swagger-ui / biblioteca
  6. Crear clases php de modelo y recurso para la API
  7. Ejecute el archivo PHP para generar el json
  8. Dar ruta de json en api-doc.json
  9. Proporcione la ruta de api-doc.json en index.php dentro de la carpeta swagger-ui dist

Si necesita otra ayuda, no dude en preguntar.


1
¿Existe un editor en línea (que no sea swagger-editor) que pueda generar esto por mí? No quiero hacer anotaciones en mis API de PHP si hay una forma más sencilla. El problema, me he dado cuenta es que swagger-editor genera swagger spec v2.0, y swagger-ui no maneja eso a partir de ahora.
Salil

@Salil todo lo que sé es que swagger proporciona su propio editor en línea, es decir, editor.swagger.wordnik.com No tengo conocimiento de ningún otro editor en línea, si encuentra alguno, compártelo con nosotros, gracias :)
Syed Raza Mehdi

2

Hay un pequeño programa Java que genera documentos (adoc o md) a partir de un archivo 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);

Desafortunadamente, solo es compatible con OpenAPI 2.0 pero no con OpenAPI 3.0 .


2

Para Swagger API 3.0, ¡generar código de cliente Html2 desde Swagger Editor en línea funciona muy bien para mí!


1

Encontré esta herramienta llamada api-html muy útil. Está generando una interfaz de usuario html5 impresionante con muchas posibilidades.

Hay opciones para generar en línea o mediante la herramienta cli .

Aquí hay un enlace a la demostración basada en "api-html": pets-demo

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.