2017-01-23 9 views
8

Я использую платформу java spring boot для создания REST api для моего проекта, и я использую «springfox-swagger2 и springfox-swagger-ui» для создания документации swagger. Я могу видеть свою документацию, используя url http://localhost:8080/swagger-ui.html.Как сгенерировать swagger.json

Как обрешетка или генерировать swagger.json/spec.json, документация не должна быть с этим приложением, мы используем отдельное приложение для перечисления АНИ документы

ответ

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

Вы можете получить URL с вашим чванство-интерфейс HTML-страница:

enter image description here

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

А на самом деле вы можете получить все URLs с хромом/светлячок разработать инструменты особенность сети.

+1

Как d o вы загружаете файлы swagger.json/spec.json из этого URL-адреса? –

+0

В браузере введите полный URL .. и вы получите JSON в качестве ответа. Который можно вырезать и вставить как файл json –

0

Если вы используете Maven, вы можете создать клиента и на стороне сервера документации (YAML, JSON и HTML) с помощью swagger-maven-plugin

Добавьте это в 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> ........ 

Вы можете скачать * .hbs шаблон по этому адресу: https://github.com/kongchen/swagger-maven-example

Выполнить MVN чванство: генерировать JSon документация будет генерироваться в вашем проекте/сгенерированного/чванство/каталог. мимо него по этому адресу: http://editor.swagger.io

и генерировать то, что вы хотите (на стороне сервера или на стороне клиента API в предпочитаемом технологии)

2

Я немного поздно, но я просто понял, что вы можно открыть консоль браузера и найти URL-адрес в запросе GET, который возвращает определение JSON для ваших документов Swagger. Следующий метод работал для меня при сопоставлении моего API с AWS API Gateway.

Для этого:

  1. Перейдите куражиться документы оконечным
  2. Откройте консоль
  3. браузера Обновите страницу
  4. Перейдите на вкладку сети и фильтр по XHR просит
  5. Right нажмите на запрос XHR, который заканчивается на ?format=openapi
  6. Теперь вы можете просто скопировать и вставить его в новый JSON файл!
+0

+ вам нужно скопировать содержимое тела ответа в запросе XHR, где доступен JSON – Vijai

 Смежные вопросы

  • Нет связанных вопросов^_^