如何生成swagger.json

时间:2017-01-23 14:16:08

标签: spring-mvc swagger swagger-ui swagger-2.0

我使用java spring boot框架为我的项目创建REST api,我使用“springfox-swagger2和springfox-swagger-ui”生成swagger文档。我可以使用网址http://localhost:8080/swagger-ui.html查看我的文档。

如何创建或生成swagger.json / spec.json ,文档不应该与此应用程序一起使用我们使用单独的应用程序列出api文档

6 个答案:

答案 0 :(得分:16)

您可以使用swagger-ui html页面获取网址:

enter image description here

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

实际上,您可以使用chrome / firefox开发工具网络功能获取所有网址。

答案 1 :(得分:8)

我用一个小技巧

完成了这个

我在家庭控制器测试用例的末尾添加了以下代码

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 :(得分:6)

如果您使用Maven,则可以使用swagger-maven-plugin生成客户端和服务器端文档(yaml,json和html)

将其添加到您的pom.xml:

public static void main(String[] args) throws IOException {
        Set<String> lines = new TreeSet<>(Comparator.comparing(o -> o.substring(o.indexOf(','))));

        // New BufferedReader.
        BufferedReader reader = new BufferedReader(new FileReader("sample.txt"));

        // Add all lines from file to ArrayList.
        while (true) {
            String line = reader.readLine();
            if (line == null) {
                break;
            }
            lines.add(line);
        }

        // Close it.
        reader.close();

        // Print each line.
        for (String line : lines) {
            System.out.println(line);
        }
    }

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

执行mvn swagger:generate JSon文档将在您的project / generated / swagger /目录中生成。 过去就在这个地址: http://editor.swagger.io

生成您想要的内容(首选技术中的服务器端或客户端API)

答案 3 :(得分:4)

我在这里有点晚了,但我发现你可以打开浏览器控制台并找到GET请求的URL,它返回Swagger文档的JSON定义。将API映射到AWS API Gateway时,以下技术对我有用。

要做到这一点:

  1. 导航到您的Swagger文档端点
  2. 打开浏览器控制台
  3. 刷新页面
  4. 导航至网络标签并按XHR请求过滤
  5. 右键点击以?format=openapi
  6. 结尾的XHR请求
  7. 您现在可以将其复制并粘贴到新的JSON文件中!

答案 4 :(得分:4)

你应该可以在

获得你的swagger.json

http://localhost:8080/api-docs

假设您没有像宠物商店示例应用程序那样保留版本控制。在这种情况下,URL将是:

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

答案 5 :(得分:0)

如果正确配置了swagger,则将获取REST API的api json定义。您可以直接使用swagger / docs / v1,这意味着如果版本为v1(或仅指定版本),则完整的网址为

http://localhost:8080/swagger/docs/v1