web-dev-qa-db-fra.com

Comment générer swagger.json

J'utilise Java framework de démarrage printanier pour créer REST api pour mon projet et j'utilise "springfox-swagger2 et springfox-swagger-ui" pour générer swagger documentation.Je peux voir ma documentation à l’aide de l’URL http: // localhost: 8080/swagger-ui.html .

Comment puis-je créer ou générer swagger.json/spec.json , La documentation ne doit pas être avec cette application, nous utilisons une application distincte pour la liste de l'API docs

25
Bikesh M

J'ai fait ça avec un petit tour

J'ai ajouté le code suivant à la fin du scénario de test de mon contrôleur domestique

import org.springframework.boot.test.web.client.TestRestTemplate;

public class HomeControllerTest extends .... ...... {

@Autowired
private TestRestTemplate restTemplate;


@Test
public void testHome() throws Exception {
     //.......
     //... my home controller test code 
     //.....

    String swagger = this.restTemplate.getForObject("/v2/api-docs", String.class);

    this.writeFile("spec.json", swagger );
}

public void writeFile(String fileName, String content) {

    File theDir = new File("swagger");

    if (!theDir.exists()) {
        try{
            theDir.mkdir();
        } 
        catch(SecurityException se){ }        
    }

    BufferedWriter bw = null;
    FileWriter fw = null;
    try {
        fw = new FileWriter("swagger/"+fileName);
        bw = new BufferedWriter(fw);
        bw.write(content);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (bw != null)
                bw.close();
            if (fw != null)
                fw.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }

    }

}
}

Je ne sais pas si c'est bien ou pas, mais ça marche :)

Dépendance

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.4.0</version>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.6.1</version>
    </dependency> 
8
Bikesh M

Vous pouvez obtenir l'URL avec votre page html swagger-ui:

enter image description here

GET http://localhost:8080/v2/api-docs?group=App

Et en fait, vous pouvez obtenir toutes les URL avec la fonctionnalité réseau d’outils de développement chrome/firefox.

17
Liping Huang

Si vous utilisez Maven, vous pouvez générer une documentation côté client et serveur (yaml, json et html) en utilisant swagger-maven-plugin

Ajoutez ceci à votre pom.xml:

.....
 <plugin>
                <groupId>com.github.kongchen</groupId>
                <artifactId>swagger-maven-plugin</artifactId>
                <version>3.0.1</version>
                <configuration>
                    <apiSources>
                        <apiSource>
                            <springmvc>true</springmvc>
                            <locations>com.yourcontrollers.package.v1</locations>
                            <schemes>http,https</schemes>
                            <Host>localhost:8080</Host>
                            <basePath>/api-doc</basePath>
                            <info>
                                <title>Your API name</title>
                                <version>v1</version>
                                <description> description of your API</description>
                                <termsOfService>
                                    http://www.yourterms.com
                                </termsOfService>
                                <contact>
                                    <email>[email protected]</email>
                                    <name>Your Name</name>
                                    <url>http://www.contact-url.com</url>
                                </contact>
                                <license>
                                    <url>http://www.licence-url.com</url>
                                    <name>Commercial</name>
                                </license>
                            </info>
                            <!-- Support classpath or file absolute path here.
                            1) classpath e.g: "classpath:/markdown.hbs", "classpath:/templates/hello.html"
                            2) file e.g: "${basedir}/src/main/resources/markdown.hbs",
                                "${basedir}/src/main/resources/template/hello.html" -->
                            <templatePath>${basedir}/templates/strapdown.html.hbs</templatePath>
                            <outputPath>${basedir}/generated/document.html</outputPath>
                            <swaggerDirectory>generated/swagger-ui</swaggerDirectory>
                            <securityDefinitions>
                                <securityDefinition>
                                    <name>basicAuth</name>
                                    <type>basic</type>
                                </securityDefinition>
                            </securityDefinitions>
                        </apiSource>
                    </apiSources>
                </configuration>
            </plugin> ........

Vous pouvez télécharger le modèle * .hbs à cette adresse: https://github.com/kongchen/swagger-maven-example

Exécutez mvn swagger: générer de la documentation JSon sera générée dans votre répertoire projet/généré/swagger /. Déposez-le à cette adresse: http://editor.swagger.io

Et générez ce que vous voulez (API côté serveur ou côté client dans votre technologie préférée)

9
MK-rou

Je suis un peu en retard ici, mais je viens de comprendre que vous pouvez ouvrir la console de votre navigateur et trouver l'URL de la requête GET qui renvoie la définition JSON de vos documents Swagger. La technique suivante a fonctionné pour moi lors du mappage de mon API vers AWS API Gateway.

Pour faire ça:

  1. Accédez à votre point de terminaison de documentation Swagger
  2. Ouvrez la console du navigateur
  3. Actualiser la page
  4. Accédez à l'onglet Réseau et filtrez par requêtes XHR
  5. Faites un clic droit sur la requête XHR qui se termine par ?format=openapi
  6. Vous pouvez maintenant simplement copier et coller cela dans un nouveau fichier JSON!
7
rlfrahm

Vous devriez pouvoir obtenir votre swagger.json à

http: // localhost: 8080/api-docs

en supposant que vous n'avez pas conservé le contrôle de version comme dans l'exemple d'application pour animalerie. Dans ce cas, l'URL serait:

http: // localhost: 8080/v2/api-docs

5
Niccolò

Pour obtenir la définition de l’application json de REST, si swagger est correctement configuré. Vous pouvez utiliser directement swagger/docs/v1, cela signifie que l’URL complète sera, si version v1 (ou spécifiez simplement la version)

http: // localhost: 8080/swagger/docs/v1

0
reach2saurabh