Ich verwende Java Spring Boot Framework, um REST API für mein Projekt zu erstellen, und ich verwende "springfox-swagger2 und springfox-swagger-ui", um Swagger zu generieren Dokumentation: Ich kann meine Dokumentation über die URL http: // localhost: 8080/swagger-ui.html anzeigen.
Wie kann ich swagger.json/spec.json erzeugen , Die Dokumentation sollte nicht mit dieser Anwendung sein, wir verwenden eine separate Anwendung zum Auflisten der API docs
Ich habe das mit einem kleinen Trick gemacht
Ich habe den folgenden Code am Ende meines Home-Controller-Testfalls hinzugefügt
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();
}
}
}
}
Ich weiß nicht, ob das der richtige Weg ist oder nicht, aber es funktioniert :)
Abhängigkeit
<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>
Wenn Sie Maven verwenden, können Sie clientseitige und serverseitige Dokumentation (yaml, json und html) mit swagger-maven-plugin erstellen
Fügen Sie dies zu Ihrer pom.xml hinzu:
.....
<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> ........
Sie können die * .hbs-Vorlage unter folgender Adresse herunterladen: https://github.com/kongchen/swagger-maven-example
Führen Sie mvn swagger aus: Die JSon-Dokumentation wird in Ihrem Projekt/generated/swagger/-Verzeichnis erstellt. An dieser Adresse einfügen: http://editor.swagger.io
Und generieren Sie, was immer Sie wollen (serverseitige oder clientseitige API in Ihrer bevorzugten Technologie)
Ich bin etwas spät dran, aber ich habe gerade herausgefunden, dass Sie Ihre Browserkonsole öffnen und die URL zu der GET-Anforderung finden können, die die JSON-Definition für Ihre Swagger-Dokumente zurückgibt. Die folgende Technik hat bei der Zuordnung meiner API zu AWS API Gateway funktioniert.
Um dies zu tun:
?format=openapi
Endet.Sie sollten in der Lage sein, Ihre swagger.json bei zu bekommen
http: // localhost: 8080/api-docs
vorausgesetzt, Sie haben die Versionierung nicht wie in der Beispielanwendung für die Zoohandlung beibehalten. In diesem Fall wäre die URL:
Um die API-JSON-Definition für REST API zu erhalten, wenn swagger richtig konfiguriert ist. Sie können direkt swagger/docs/v1 verwenden die Version)