Как создать swagger.json

Я использую java spring boot framework для создания REST API для моего проекта, и я использую "springfox-swagger2 и springfox-swagger-ui" для генерации документации swagger. Я могу просмотреть свою документацию по URL http://localhost:8080/swagger-ui.html.

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

Ответ 1

Я сделал это с небольшим трюком

Я добавил следующий код в конце тестового примера моего домашнего контроллера

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> 

Ответ 2

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

enter image description here

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

И на самом деле вы можете получить все URL-адреса с помощью функции Chrome/Firefox.

Ответ 3

Если вы используете 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 swagger: сгенерируйте документацию JSon, которая будет сгенерирована в вашем каталоге /genaged/swagger/. Пройдите по этому адресу: http://editor.swagger.io

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

Ответ 4

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

Для этого:

  • Перейдите к конечной точке документа Swagger
  • Откройте консоль браузера
  • Обновить страницу
  • Перейдите на вкладку сети и выполните фильтрацию по запросам XHR.
  • Щелкните правой кнопкой мыши на запросе XHR, который заканчивается на ?format=openapi
  • Теперь вы можете просто скопировать и вставить его в новый файл JSON!

Ответ 5

Вы должны иметь возможность получить ваш swagger.json на

http://localhost:8080/api-docs

при условии, что вы не сохранили версии, как в примере приложения зоомагазина. В этом случае URL будет:

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

Ответ 6

Чтобы получить определение API JSON для REST API, если swagger настроен правильно. Вы можете использовать непосредственно swagger/docs/v1, это означает, что полный URL будет, если версия v1 (или просто указать версию)

HTTP://локальный: 8080/чванство /Docs/v1

Ответ 7

Кто-нибудь взломает МОЮ ЧАСТЬ СИСТЕМЫ И РАБОТЫ С ПОМОЩЬЮ ТЕЛЕФОНА, КОГДА ИМ ЕЕ ИДЕТ... система, которую я пытаюсь ЗАКРЫТЬ... НО НЕ МОЖЕТ ДЕЛАТЬ ЭТО..

17 FHONE WORK MY FHONE.. Так что это не мои проблемы У нас есть скриншот, сообщите в Google