一、最近离职要把做搞过的接口整理成文档,查了查postman好像不支持导出文档,于是写了个工具类,供大家参考!

  前提你要先把postman里的接口导出来

  如图:

  

二、所用到的包(主要Json相关的包)和项目结构

  commons-beanutils-1.9.2.jar,commons-collections-3.2.1.jar,commons-httpclient-3.1-sources.jar,

  commons-lang-2.6.jar,commons-logging-1.2.jar,ezmorph-1.0.6.jar,json-lib-2.4.jar,morph-1.1.1.jar

  

  

三、代码

  

  1. package zf;
  2.  
  3. import net.sf.json.JSONArray;
  4. import net.sf.json.JSONObject;
  5.  
  6. import java.io.*;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. /**
  11. * Created by Yan on 2018/4/3.
  12. */
  13. public class ExportPostManApiUtil {
  14.  
  15. public static String readToString(String fileName) {
  16. String encoding = "UTF-8";
  17. File file = new File(fileName);
  18. Long fileLength = file.length();
  19. byte[] fileContent = new byte[fileLength.intValue()];
  20. try {
  21. FileInputStream in = new FileInputStream(file);
  22. in.read(fileContent);
  23. in.close();
  24. } catch (FileNotFoundException e) {
  25. e.printStackTrace();
  26. } catch (IOException e) {
  27. e.printStackTrace();
  28. }
  29. try {
  30. return new String(fileContent, encoding);
  31. } catch (UnsupportedEncodingException e) {
  32. System.err.println("The OS does not support " + encoding);
  33. e.printStackTrace();
  34. return null;
  35. }
  36. }
  37.  
  38. public static void main(String[] args) {
  39. // readFile("C:\\Users\\Yan\\Desktop\\api\\b.json");
  40. // readFile("C:\\Users\\Yan\\Desktop\\api\\c.json");
  41. // readFile("C:\\Users\\Yan\\Desktop\\api\\d.json");
  42. // readFile("C:\\Users\\Yan\\Desktop\\api\\e.json");
  43. // readFile("C:\\Users\\Yan\\Desktop\\api\\f.json");
  44. readFile("C:\\Users\\Yan\\Desktop\\api\\h.json");
  45. }
  46.  
  47. /**
  48. * 解析postman 导出的Json数据
  49. *
  50. * @param path
  51. */
  52. private static void readFile(String path) {
  53. String file = readToString(path);
  54. JSONObject allData = JSONObject.fromObject(file);
  55. String title = allData.getString("name");
  56. String requests = allData.getString("requests");
  57.  
  58. JSONArray reqList = JSONArray.fromObject(requests);
  59.  
  60. List<PostMan> postManList = new ArrayList<>();
  61.  
  62. for (Object o : reqList) {
  63. JSONObject jo = (JSONObject) o;
  64. PostMan postMan = new PostMan();
  65. postMan.setName(jo.getString("name"));
  66. postMan.setUrl(jo.getString("url"));
  67. postMan.setMethod(jo.getString("method"));
  68.  
  69. if (!jo.getString("data").equals("null")) {
  70. JSONArray dataArr = JSONArray.fromObject(jo.getString("data"));
  71. List<Data> dataList = new ArrayList<>();
  72. if (dataArr.size() > 0) {
  73. for (Object d : dataArr) {
  74. JSONObject jsonData = (JSONObject) d;
  75. Data data = new Data();
  76. data.setKey(jsonData.getString("key"));
  77. data.setType(jsonData.getString("type"));
  78. data.setEnabled(jsonData.getBoolean("enabled"));
  79. if (jsonData.containsKey("description")) {
  80. data.setDescription(jsonData.getString("description"));
  81. }
  82. data.setValue(jsonData.getString("value"));
  83. dataList.add(data);
  84. }
  85. }
  86. postMan.setData(dataList);
  87. }
  88. postManList.add(postMan);
  89. }
  90. writeToHtml(title, postManList);
  91. }
  92.  
  93. /**
  94. * 数据拼成html
  95. *
  96. * @param title
  97. * @param postManList
  98. */
  99. private static void writeToHtml(String title, List<PostMan> postManList) {
  100. StringBuffer buffer = new StringBuffer();
  101. buffer.append("<h2>" + title + "</h2>");
  102. buffer.append("<br/>");
  103. for (PostMan pm : postManList) {
  104. buffer.append("<h3 style='margin:1px 0 1px 0'>接口名称:" + pm.getName() + "</h3>");
  105. buffer.append("<br/>");
  106. buffer.append("<h3 style='margin:1px 0 1px 0'>接口地址:" + pm.getUrl() + "</h3>");
  107. buffer.append("<br/>");
  108. buffer.append("<h3 style='margin:1px 0 1px 0'>请求方式:" + pm.getMethod() + "</h3>");
  109. buffer.append("<br/>");
  110. List<Data> dataList = pm.getData();
  111. if (null != dataList && dataList.size() > 0) {
  112. buffer.append("<h3 style='margin:1px 0 1px 0'>请求参数:</h3>");
  113. buffer.append("<br/>");
  114.  
  115. buffer.append("<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">");
  116. buffer.append("<tr>");
  117. buffer.append("<td>参数名</td><td>参数类型</td><td>是否必填</td><td>示例值</td><td>描述</td>");
  118. buffer.append("</tr>");
  119. for (Data data : dataList) {
  120. buffer.append("<tr>");
  121. buffer.append("<td>" + data.getKey() + "</td><td>" + data.getType() + "</td><td>" + data.getEnabled() + "</td><td>" + data.getValue() + "</td><td>" + data.getDescription() + "</td>");
  122. buffer.append("</tr>");
  123. }
  124. buffer.append("</table>");
  125. buffer.append("<br/>");
  126. }
  127. }
  128. System.out.println(buffer.toString());
  129. }
  130.  
  131. }
  1. package zf;
  2.  
  3. /**
  4. * Created by Yan on 2018/4/3.
  5. */
  6. public class Data {
  7.  
  8. private String key;
  9. private String value;
  10. private String type;
  11. private Boolean enabled;
  12. private String description;
  13.  
  14. public String getKey() {
  15. return key;
  16. }
  17.  
  18. public void setKey(String key) {
  19. this.key = key;
  20. }
  21.  
  22. public String getValue() {
  23. return value;
  24. }
  25.  
  26. public void setValue(String value) {
  27. this.value = value;
  28. }
  29.  
  30. public String getType() {
  31. return type;
  32. }
  33.  
  34. public void setType(String type) {
  35. this.type = type;
  36. }
  37.  
  38. public Boolean getEnabled() {
  39. return enabled;
  40. }
  41.  
  42. public void setEnabled(Boolean enabled) {
  43. this.enabled = enabled;
  44. }
  45.  
  46. public String getDescription() {
  47. return description;
  48. }
  49.  
  50. public void setDescription(String description) {
  51. this.description = description;
  52. }
  53. }
  1. package zf;
  2.  
  3. import java.util.List;
  4.  
  5. /**
  6. * Created by Yan on 2018/4/3.
  7. */
  8. public class PostMan {
  9.  
  10. private String name;
  11. private String url;
  12. private String method;
  13. private List<Data> data;
  14.  
  15. public String getName() {
  16. return name;
  17. }
  18.  
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22.  
  23. public String getUrl() {
  24. return url;
  25. }
  26.  
  27. public void setUrl(String url) {
  28. this.url = url;
  29. }
  30.  
  31. public String getMethod() {
  32. return method;
  33. }
  34.  
  35. public void setMethod(String method) {
  36. this.method = method;
  37. }
  38.  
  39. public List<Data> getData() {
  40. return data;
  41. }
  42.  
  43. public void setData(List<Data> data) {
  44. this.data = data;
  45. }
  46. }

四、运行效果(需要把控制台打印出来字符串放到html中)

  

五、源代码

  https://files.cnblogs.com/files/xsnd/demo.zip

Postman导出Api文档的更多相关文章

  1. 在MyEclipse中使用javadoc导出API文档详解

    本篇文档介绍如何在MyEclipse中导出javadoc(API)帮助文档,并且使用htmlhelp.exe和jd2chm.exe生成chm文档. 具体步骤如下: 打开MyEclipse,选中想要制作 ...

  2. 导出api文档

    Export,选中项目或者需要导出api的类,右键 java-->javadoc configure,选择C:\Program Files\Java\jdk1.6.0_29\bin\javado ...

  3. Springboot swagger2 导出api文档

    具体导出的代码,参考了:http://www.spring4all.com/article/699 导出前,首先需要配置好swagger2,参见 https://www.cnblogs.com/yan ...

  4. 微服务&#183;API文档

    阅文时长 | 3.92分钟 字数统计 | 2754.05字符 主要内容 | 1.什么是API文档 2.API文档的使用 3.声明与参考资料 『微服务·API文档』 编写人 | SCscHero 编写时 ...

  5. 使用sphinx快速为你python注释生成API文档

    sphinx简介sphinx是一种基于Python的文档工具,它可以令人轻松的撰写出清晰且优美的文档,由Georg Brandl在BSD许可证下开发.新版的Python3文档就是由sphinx生成的, ...

  6. 使用apidoc 生成Restful web Api文档——新手问题与解决方法

    使用apidoc工具来给项目做接口文档,不仅有合理的源码注释,还可以生成对应的文档.是给源码写备注的一个极佳实践. 工具名称:apiDoc Git地址:https://github.com/apido ...

  7. swagger 生成 api 文档 html

    https://cloud.tencent.com/developer/article/1332445 使用Swagger2Markup实现导出API文档 飞狗发表于专注于主流技术和业务订阅 2.4K ...

  8. 干掉 Postman?测试接口直接生成API文档,这个工具贼好用

    大家好,我是小富~ 前几天粉丝群有小伙伴问,有啥好用的API文档工具推荐,无意间发现了一款工具,这里马不停蹄的来给大家分享一下. ShowDoc一个非常适合团队的在线API文档工具,也支持用docke ...

  9. 干掉 Postman?测试接口直接生成API文档,ApiPost真香!

    实不相瞒我的收藏夹里躺着很多优质的开发工具,我有个爱好平时遇到感兴趣的开发工具都会记录下来,然后有时间在慢慢研究.前几天刚给同事分享一款非常好用的API文档工具,真的被惊艳到了,粉丝朋友们也感受一下吧 ...

随机推荐

  1. 如何用命令将本地项目上传到git[z]

    1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2.把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点 ...

  2. 十五、Collections.sort(<T>, new Comparator<T>() {})针对字符串排序

    1.排序对象全是字母组成,可以根据ASCII编码表排序 package com.abcd; public class Person{ private String name; private int ...

  3. jenkins远程执行脚本时报Bad version number in .class file

    这几天在学习jenkins的持续集成和部署,到了最后一步启动服务的时候,遇到了一个这个Bad version number in .class file的报错(如下图). 这个报错在最开始手工部署的时 ...

  4. svg绘制一个简单地饼图

    一个简单地svg绘制饼图的demo,代码如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8& ...

  5. P3383 【模板】线性筛素数

    因为数据很大所以要用线性筛.. #include<iostream> #include<cstdio> using namespace std; typedef long lo ...

  6. 用c语言基本实现wc.exe功能

    网址:https://github.com/3216005214/wc.exe wc项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿 ...

  7. form表单上传图片文件

    import os def upload(request): if request.method == 'GET': img_list = models.Img.objects.all() retur ...

  8. OO前三次作业分析

    一,第一次作业分析 度量分析: 第一次的oo作业按照常理来说是不应该有这么多的圈复杂度,但是由于第一次写的时候,完全不了解java的相关知识,按照c语言的方式来写,完全的根据指导书的逻辑,先写好了正确 ...

  9. sql语句性能优化

    需要的准备知识 1最左前缀匹配 mysql会一直向右匹配直到遇到范围查询(>.<.between.like)就停止匹配, 对于where条件 a = 1 and b> 2 and c ...

  10. IEC2017级_1-2班2次博客作业成绩说明

    一.博客作业内容 2018上IEC计算机高级语言(C)作业 第2次作业 二.评分规则说明 1.程序调试题,要描述出调试所遇到问题及修改内容,并表述清楚程序功能.流程图不规范的会减1-2分: 2.知识点 ...