2017-01-23 116 views
8

我使用java spring引導框架爲我的項目創建REST api,並使用「springfox-swagger2和springfox-swagger-ui」來生成swagger文檔。我能夠使用網址http://localhost:8080/swagger-ui.html查看我的文檔。如何生成swagger.json

我如何箱或產生swagger.json/spec.json,該文件不應該使用這個應用程序,我們使用的是上市API文檔

回答

0

我這樣做有一個小竅門

我在家裏控制器測試用例的末尾添加以下代碼

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(); 
     } 

    } 

} 
} 

我不知道這是正確的方式或不但它的工作:)

依賴

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

一個單獨的應用程序,您就能獲得網址與你的招搖的UI HTML頁面:

enter image description here

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

而實際上你可以得到所有鍍鉻的URL/Firefox的開發工具的網絡功能。

+1

如何d你從這個URL下載swagger.json/spec.json文件? –

+0

在瀏覽器中鍵入完整的URL ..並且您得到JSON作爲響應。其中可以剪切和粘貼爲json文件 –

0

如果你使用Maven,您可以通過使用swagger-maven-plugin

添加到您的pom.xml生成客戶端和服務器端文件(YAML,JSON和HTML):

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

您可以下載*在這個地址.hbs模板: https://github.com/kongchen/swagger-maven-example

執行MVN招搖:產生 JSON文件將在您的項目/生成/昂首闊步/目錄中生成。 過去,該地址: http://editor.swagger.io

,並生成你想要什麼都(在你的首選技術,服務器端或客戶端API)

2

我有點晚了這裏,但我想通了,你可以打開您的瀏覽器控制檯並找到返回您的Swagger文檔的JSON定義的GET請求的URL。將我的API映射到AWS API網關時,以下技術適用於我。

要做到這一點:

  1. 導航到揚鞭文檔端點
  2. 打開瀏覽器控制檯
  3. 刷新頁面
  4. 導航至XHR網絡標籤和過濾請求
  5. 權點擊結束於?format=openapi
  6. 的XHR請求,您現在可以將其複製並粘貼到新的JSON中文件!
+0

+您必須複製XHR請求的響應正文內容,其中JSON可用 – Vijai