Postman导出Api文档

时间:2022-09-25 22:42:01

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

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

  如图:

  Postman导出Api文档Postman导出Api文档

二、所用到的包(主要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

  Postman导出Api文档

  Postman导出Api文档

三、代码

  

package zf;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject; import java.io.*;
import java.util.ArrayList;
import java.util.List; /**
* Created by Yan on 2018/4/3.
*/
public class ExportPostManApiUtil { public static String readToString(String fileName) {
String encoding = "UTF-8";
File file = new File(fileName);
Long fileLength = file.length();
byte[] fileContent = new byte[fileLength.intValue()];
try {
FileInputStream in = new FileInputStream(file);
in.read(fileContent);
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
return new String(fileContent, encoding);
} catch (UnsupportedEncodingException e) {
System.err.println("The OS does not support " + encoding);
e.printStackTrace();
return null;
}
} public static void main(String[] args) {
// readFile("C:\\Users\\Yan\\Desktop\\api\\b.json");
// readFile("C:\\Users\\Yan\\Desktop\\api\\c.json");
// readFile("C:\\Users\\Yan\\Desktop\\api\\d.json");
// readFile("C:\\Users\\Yan\\Desktop\\api\\e.json");
// readFile("C:\\Users\\Yan\\Desktop\\api\\f.json");
readFile("C:\\Users\\Yan\\Desktop\\api\\h.json");
} /**
* 解析postman 导出的Json数据
*
* @param path
*/
private static void readFile(String path) {
String file = readToString(path);
JSONObject allData = JSONObject.fromObject(file);
String title = allData.getString("name");
String requests = allData.getString("requests"); JSONArray reqList = JSONArray.fromObject(requests); List<PostMan> postManList = new ArrayList<>(); for (Object o : reqList) {
JSONObject jo = (JSONObject) o;
PostMan postMan = new PostMan();
postMan.setName(jo.getString("name"));
postMan.setUrl(jo.getString("url"));
postMan.setMethod(jo.getString("method")); if (!jo.getString("data").equals("null")) {
JSONArray dataArr = JSONArray.fromObject(jo.getString("data"));
List<Data> dataList = new ArrayList<>();
if (dataArr.size() > 0) {
for (Object d : dataArr) {
JSONObject jsonData = (JSONObject) d;
Data data = new Data();
data.setKey(jsonData.getString("key"));
data.setType(jsonData.getString("type"));
data.setEnabled(jsonData.getBoolean("enabled"));
if (jsonData.containsKey("description")) {
data.setDescription(jsonData.getString("description"));
}
data.setValue(jsonData.getString("value"));
dataList.add(data);
}
}
postMan.setData(dataList);
}
postManList.add(postMan);
}
writeToHtml(title, postManList);
} /**
* 数据拼成html
*
* @param title
* @param postManList
*/
private static void writeToHtml(String title, List<PostMan> postManList) {
StringBuffer buffer = new StringBuffer();
buffer.append("<h2>" + title + "</h2>");
buffer.append("<br/>");
for (PostMan pm : postManList) {
buffer.append("<h3 style='margin:1px 0 1px 0'>接口名称:" + pm.getName() + "</h3>");
buffer.append("<br/>");
buffer.append("<h3 style='margin:1px 0 1px 0'>接口地址:" + pm.getUrl() + "</h3>");
buffer.append("<br/>");
buffer.append("<h3 style='margin:1px 0 1px 0'>请求方式:" + pm.getMethod() + "</h3>");
buffer.append("<br/>");
List<Data> dataList = pm.getData();
if (null != dataList && dataList.size() > 0) {
buffer.append("<h3 style='margin:1px 0 1px 0'>请求参数:</h3>");
buffer.append("<br/>"); buffer.append("<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">");
buffer.append("<tr>");
buffer.append("<td>参数名</td><td>参数类型</td><td>是否必填</td><td>示例值</td><td>描述</td>");
buffer.append("</tr>");
for (Data data : dataList) {
buffer.append("<tr>");
buffer.append("<td>" + data.getKey() + "</td><td>" + data.getType() + "</td><td>" + data.getEnabled() + "</td><td>" + data.getValue() + "</td><td>" + data.getDescription() + "</td>");
buffer.append("</tr>");
}
buffer.append("</table>");
buffer.append("<br/>");
}
}
System.out.println(buffer.toString());
} }
package zf;

/**
* Created by Yan on 2018/4/3.
*/
public class Data { private String key;
private String value;
private String type;
private Boolean enabled;
private String description; public String getKey() {
return key;
} public void setKey(String key) {
this.key = key;
} public String getValue() {
return value;
} public void setValue(String value) {
this.value = value;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public Boolean getEnabled() {
return enabled;
} public void setEnabled(Boolean enabled) {
this.enabled = enabled;
} public String getDescription() {
return description;
} public void setDescription(String description) {
this.description = description;
}
}
package zf;

import java.util.List;

/**
* Created by Yan on 2018/4/3.
*/
public class PostMan { private String name;
private String url;
private String method;
private List<Data> data; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getUrl() {
return url;
} public void setUrl(String url) {
this.url = url;
} public String getMethod() {
return method;
} public void setMethod(String method) {
this.method = method;
} public List<Data> getData() {
return data;
} public void setData(List<Data> data) {
this.data = data;
}
}

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

  Postman导出Api文档

五、源代码

  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. 微服务&amp&semi;&num;183&semi;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. 导出jar包和api文档

    导出jar包过程 右击项目名称->export 选择java->JAR file next->选择路径 导出成功 生成api文档 选择doc->右键export java-&g ...

随机推荐

  1. c&sol;c&plus;&plus;面试题&lpar;7&rpar;零碎知识总结

    1.变量的声明和定义有什么区别? 声明:变量的声明做了两件事情 a.告诉编译器这个变量已经匹配到一块内存上了,下面的代码用到的变量或对象是在别处定义的. 声明可以出现很多次. b.告诉编译器这个变量名 ...

  2. linux 给文件夹权限

    用的thinkphp3.2的框架,在本地运行没有问题,部署到服务器上(基于centos的LAMP环境)即报错_STORAGE_WRITE_ERROR_:./Application/Runtime/Ca ...

  3. 学习总结 html图片热点,网页划区,拼接,表单

    表单: action="负责处理的 <form id="" name="" method="post/get"服务端&quo ...

  4. Bootstrap栅栏布局里col-xs-&ast;、col-sm-&ast;、col-md-&ast;、col-lg-&ast;之间的区别及使用方法

    原文:Bootstrap栅栏布局里col-xs-*.col-sm-*.col-md-*.col-lg-*之间的区别及使用方法 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...

  5. 安装SQL2008时显示:RebootRequiredCheck 检查是否需要挂起计算机重新启动。

    解决方法: a.在开始->运行中输入regeditb.删除HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Serverc.删除HKEY_LO ...

  6. 第二十天- 多继承 经典MRO 新式MRO super&lpar;&rpar;

    # 多继承:# 在继承关系中.⼦类自动拥有⽗类中除私有属性外其他所有内容.python⽀持多继承.子类可拥有多⽗类. class ShenXian: # 神仙 def fei(self): print ...

  7. (转)一种开源的跨平台视频开发框架:VideoLAN - VLC media player

    VLC原先是几个法国的大学生做的项目,后来他们把VLC作为了一个开源的项目,吸引了来自世界各国的很多优秀程序员来共同编写和维护VLC,才逐渐变成了现在这个样子.至于为什么叫VideoLan Clien ...

  8. GIT 提交步骤

    1.提交 git add .

  9. 20个初学者实用的CSS技巧

    过去就连一个镜像站点,我们都依靠大量的开发人员和程序员进行维护.得益于CSS和它的灵活性使得样式能够从代码中被独立抽离出来,从而让一个只具备基本CSS理论的初学者都能够轻易地改变网站的样式. 不论你是 ...

  10. 解决Vue方法中setTimeout改变变量的值无效

    把data里的变量继承过来重新封装一下 let that = this; this.rightAnswer = false; setTimeout(function() { that.rightAns ...