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
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>
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)
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:
?format=openapi
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:
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)