Conversione della specifica JSON di Swagger in documentazione HTML


90

Per alcune API REST scritte in PHP, mi è stato chiesto di creare documentazione Swagger e, poiché non ero a conoscenza di alcun modo semplice per aggiungere annotazioni a quelle API esistenti e creare tale documentazione, ho usato questo editor per generarne alcune per ora.

Ho salvato i file JSON e YAML creati utilizzando quell'editor e ora ho bisogno di creare la documentazione interattiva finale di Swagger (questa affermazione potrebbe suonare ingenua e vaga).

Qualcuno può farmi sapere come posso convertire il file delle specifiche JSON di Swagger nella documentazione effettiva di Swagger?

Sono sulla piattaforma Windows e non so nulla di Ant / Maven.


ho provato [ github.com/wordnik/swagger-ui”(Swagger UI) ma non rende il mio json. l'unico avviso mostrato è "Questa API sta utilizzando una versione deprecata di Swagger! Per maggiori informazioni, visita github.com/wordnik/swagger-core/wiki ".
Salil

Risposte:


43

Non ero soddisfatto swagger-codegenquando cercavo uno strumento per farlo, quindi ho scritto il mio. Dai un'occhiata a bootprint-swagger

L'obiettivo principale rispetto a swagger-codegenè fornire una configurazione semplice (anche se avrai bisogno di nodejs). E dovrebbe essere facile da adattare stile e modelli per le proprie esigenze, che è una funzionalità di base del bootprint -project


9
Attenzione: dall'11 / 2016 l'autore di bootprint-swagger ha apparentemente abbandonato il progetto. swagger-codegen è ancora ben supportato.
Brent Matzelle

22
Sono l'autore e il testo dice: "Mi dispiace dover dire che non sarò in grado di sviluppare nuove funzionalità per questo progetto nel prossimo futuro. Ma: probabilmente sarò in grado di discutere e unire richieste pull, e per pubblicare nuove versioni ". Potresti chiamarlo abbandonato, io lo chiamerei "in attesa". Inviterò anche chiunque sia interessato a contribuire al progetto.
Nils Knappmeier

1
Trovato che spectaclegenera una documentazione molto più bella dal JSON
spavaldo

61

Prova a usare redoc-cli .

Stavo usando bootprint-OpenAPI con cui mi è stato la generazione di un gruppo di file ( bundle.js, bundle.js.map, index.html, main.csse main.css.map) e poi è possibile convertirlo in un singolo .htmlfile utilizzando html-inline per generare un semplice index.htmlfile.

Poi ho trovato redoc-cli molto facile da usare e l'output è davvero 2 fantastico, un unico e bellissimo file index.html .

Installazione :

npm install -g redoc-cli

Utilizzo :

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

8
Questo strumento rende davvero l'output più bello di tutti gli strumenti menzionati.
Jakub Moravec

Il file HTML all-in-one generato è abbastanza grande. Così è la dipendenza della libreria JS (~ 800KB) nel caso del rendering dal vivo da HTML personalizzato. Qualcuno sa come si possono ridurre le dimensioni?
aaronqli

1
Questo è di gran lunga il migliore imo, e dal momento che lo stiamo costruendo per gli sviluppatori che utilizzano desktop, la dimensione dell'output non è un problema.
milosmns

3
L'uso del nome eseguibile diretto non sempre funziona, l'esecuzione di npx redoc-cli ...è più affidabile.
Gattino accovacciato


19

Dai un'occhiata a pretty-swag

Esso ha

  1. Simile al pannello destro di Swagger-Editor
  2. Cerca / Filtro
  3. Schema pieghevole
  4. Feedback in tempo reale
  5. Uscita come un singolo file html

Stavo guardando Swagger Editor e pensavo che potesse esportare il riquadro di anteprima ma si è scoperto che non è possibile. Quindi ho scritto la mia versione di esso.

Divulgazione completa: sono l'autore dello strumento.


1
Ho trovato che il bel swag è uno strumento semplice e ideale, con punti di ingresso CLI e API appropriati. La mia unica e unica lamentela (e quella che mi ha costretto ad affrontare la complessità di swagger-ui invece) è stata la sua incapacità di gestire correttamente la composizione / estensione degli oggetti. Qualsiasi utilizzo di allOfnel documento produce undefined, anche negli scenari più semplici ("fusione" di un singolo oggetto, equivalente a non utilizzarlo allOfaffatto).
HonoredMule

3
Funzionalità appena implementata allOfper te. Controlla.
TLJ

2
Non sembra supportare Swagger / OpenAPI V3
SeinopSys

16

Guarda il progetto swagger-api / swagger-codegen su GitHub; il progetto README mostra come utilizzarlo per generare HTML statico. Vedere Generazione della documentazione di API HTML statiche .

Se desideri visualizzare swagger.json, puoi installare l'interfaccia utente di Swagger ed eseguirlo. Devi solo distribuirlo su un server web (la cartella dist dopo aver clonato il repository da GitHub) e visualizzare l'interfaccia utente di Swagger nel tuo browser. È un'app JavaScript.


Grazie. Il mio problema era che la spavalderia-ui non accettava le specifiche 2.0. Tuttavia, questa sembra la risposta più semplice, quindi la accetterò (per ora).
Salil

Gli strumenti Swagger si stanno ancora evolvendo per 2.0. Tuttavia, ho riscontrato che l'interfaccia utente di Swagger funziona per i miei file 2.0 che iniziano con "swagger": "2.0",
djb

Inoltre, dall'editor Swagger, puoi esportare le specifiche JSON (non come YAML ma come JSON) e l'interfaccia utente di Swagger dovrebbe essere in grado di leggerlo. (Nota: il file swagger.json deve essere sullo stesso host / porta dell'app Swagger UI, oppure devi abilitare CORS; vedi README.md nell'editor Swagger su GitHub
djb

14

Ho passato molto tempo e ho provato molte soluzioni diverse - alla fine l'ho fatto in questo modo:

<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>

Hai solo bisogno di avere path / to / my / swagger.yaml servito dalla stessa posizione.
(o usa le intestazioni CORS)


Fantastico, grazie! Ho utilizzato <link rel = "stylesheet" href = " petstore.swagger.io/swagger-ui.css "> <script src = " petstore.swagger.io/swagger-ui-bundle.js "></script >
Erando

7

Puoi anche scaricare swagger ui da: https://github.com/swagger-api/swagger-ui , prendi la cartella dist, modifica index.html: cambia il costruttore

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

in

const ui = SwaggerUIBundle({
    spec: YOUR_JSON,

ora la cartella dist contiene tutto ciò di cui hai bisogno e può essere distribuita così com'è


2

Dai un'occhiata a questo link: http://zircote.com/swagger-php/installation.html

  1. Scarica il file phar https://github.com/zircote/swagger-php/blob/master/swagger.phar
  2. Installa Composer https://getcomposer.org/download/
  3. Crea composer.json
  4. Clone swagger-php / library
  5. Clone swagger-ui / library
  6. Crea classi php risorsa e modello per l'API
  7. Esegui il file PHP per generare il json
  8. Fornisci il percorso di json in api-doc.json
  9. Fornisci il percorso di api-doc.json in index.php all'interno della cartella swagger-ui dist

Se hai bisogno di un altro aiuto, non esitare a chiedere.


1
Esiste un editor online (diverso da swagger-editor) in grado di generarlo per me? Non voglio annotare le mie API PHP se esiste un modo più semplice. Il problema, ho capito, è che swagger-editor genera swagger spec v2.0, e swagger-ui non lo gestisce al momento.
Salil

@Salil tutto quello che so è che spavalderia fornisce il proprio editor in linea cioè editor.swagger.wordnik.com Non sono a conoscenza di nessun altro editor in linea, se ne trovi condividilo con noi, grazie :)
Syed Raza Mehdi

2

C'è un piccolo programma Java che genera documenti (adoc o md) da un file 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);

Purtroppo supporta solo OpenAPI 2.0 ma non OpenAPI 3.0 .


2

Per Swagger API 3.0, la generazione di codice client Html2 dall'editor Swagger online funziona alla grande per me!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.