swagger生成的页面api接口统计,有几种方法

  • 直接在前端用js提取出来,较麻烦(不推荐,不同版本的页面生成的标签有可能不一样,因此可能提取不出来)
//apilet a = document.getElementsByClassName("opblock-summary-path");var temp = "";for(var i=0;i<a.length;i++){    temp += "\n" + a[i].getElementsByTagName("span")[0].innerText}
//请求方法let b = document.getElementsByClassName("opblock-summary-method");var temp = "";for(var i=0;i<b.length;i++){ temp += "\n" + b[i].innerText}
//描述let c = document.getElementsByClassName("opblock-summary-description");var temp = "";for(var i=0;i<c.length;i++){ temp += "\n" + c[i].innerText}
 
  • 用页面自带的api-doc中的json数据,解析数据后直接生成csv表格,需要编程

https://github.com/ghdefe/swagger-json-to-csv

public class JsonToTxtApplication {

    public static void main(String[] args) throws IOException {
SpringApplication.run(JsonToTxtApplication.class, args);
FileInputStream in = new FileInputStream("1.txt");
JsonNode jsonNode = new ObjectMapper().readTree(in); /**
* 取所有数据并存到HashMap中
*/
String api;
HashMap<String, List<Root>> hm = new HashMap<>();
JsonNode node = jsonNode.findValue("paths");
Iterator<String> stringIterator = node.fieldNames();
while (stringIterator.hasNext()) {
JsonNode tags = node.findValue((api = stringIterator.next())); //api
Iterator<String> methodsname = tags.fieldNames();
while (methodsname.hasNext()) {
String method = methodsname.next(); //方法
JsonNode methods = tags.findValue(method);
String name = methods.findValue("tags").get(0).asText();
String description = methods.findValue("description").asText(); Root root = new Root(name, method, api,description); //当前查询到的一个接口数据
//放到hashmap里管理
if (hm.containsKey(root.getName())) {
List<Root> roots = hm.get(root.getName());
roots.add(root);
hm.put(root.getName(), roots);
} else {
ArrayList<Root> roots = new ArrayList<>();
roots.add(root);
hm.put(root.getName(), roots);
} } } /**
* 获得name的顺序,并按顺序写入csv
*/
File file = new File("result.csv");
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(file), "GBK")); //excel不能读取utf-8编码的csv文件 Iterator<JsonNode> names = jsonNode.findValue("tags").iterator();
while (names.hasNext()) {
String name = names.next().findValue("name").asText();
Iterator<Root> iterator1 = hm.get(name).iterator();
bufferedWriter.write(name + ",");
Boolean isFirst = true;
while (iterator1.hasNext()) {
          //如果是第一行增加name,如果不是填入空白格
if (!isFirst) {
bufferedWriter.write(",");
} else {
isFirst = false;
}
Root next = iterator1.next();
bufferedWriter.write(next.getMethod() + "," +
next.getApi() + "," + next.getDescription());
bufferedWriter.newLine();
} }
bufferedWriter.close();

     //打开生成的csv文件
Runtime.getRuntime().exec("cmd /c start F:/Project/JsonSoup/result.csv");
System.out.println("done"); } }
  • 还可以利用xpath helper提取,需要学习一下xpath语法,还需要安装浏览器插件xpath helper。一些环境要求不能安装软件时该方法不适用。其实这种方法跟js提取是一样的,区别就在于xpath提取更加简便快捷。

提取swagger内容到csv表格,excel可打开的更多相关文章

  1. Python 操作csv和excel表格

    1. 操作csv表格 使用的库 csv 1. csv文件里读取数据 代码 1. 以列表形式打开 import csv f = open('csv_test.csv', 'r') # 打开csv文件 c ...

  2. csv表格处理(上)-- JS 与 PHP 协作导入导出

    CSV简介 在开发后台管理系统的时候,几乎无可避免的会遇到需要导入导出Excel表格的需求.csv也是表格的一种,其中文名为“逗号分隔符文件”.在Excel中打开如下图左边所示,在记事本打开如下图右边 ...

  3. Unity 读取CSV与Excel

    前几天看到我们在游戏中需要动态加载某些角色的游戏策划值,关于这个问题怎么解决呢?其实办法很多种,归根到底,就是数据的读取.我们可以想到的存储数据的载体有很多.例如:txt,xml,csv,excel. ...

  4. csv和excel互转

    Python csv转换为excel学习笔记: openpyxl模块需要安装pip install openpyxl import openpyxl import csv '''读取csv文件写入ex ...

  5. csv表格处理(下)--纯JS解析导入csv

    多日前的上篇介绍了csv表格,以及JS结合后端PHP解析表格填充表单的方法.其中csv转换成二维数组的时候逻辑比较复杂多坑,幸好PHP有丰富的库函数来处理,而现在用JS解析的话就没有那么幸运了,一切都 ...

  6. PHP处理CSV表格文件的常用操作方法是怎么样呢

    php来说,fgetcsv读入csv表格,返回一个数组,然后foreach输出成HTML的<table>,这步操作几行代码就能实现,非常简单.工作量主要还在于浏览器前端,建议你用jQuer ...

  7. 15、解决14中csv用excel打开乱码的问题 open('zhihu.csv','w',newline='',encoding='utf-8-sig')

    解决14中csv用excel打开乱码的问题 ,其实就是在写csv的时候把 utf-8 改成 utf-8-sig open('zhihu.csv','w',newline='',encoding='ut ...

  8. C# 读取CSV和EXCEL文件示例

    我们习惯了直接连到数据库上面读取数据表的数据内容: 如果有一天我们需要读取CSV,EXCEL文件的内容的时候,可不可以也像读数据表的方式一样呢?当然可以,使用OleDB ADO.NET是很简单的事情 ...

  9. 第十七篇:csv拆分、csv转excel方法

    首先对微软的office功能表示敬佩!可能是这些办公软件太过平常化,所以体会不到他有多牛!csv格式数据以前没接触过,百度百科定义,Comma-Separated Values,CSV,逗号分隔值,或 ...

随机推荐

  1. 记一次奇怪的cookie丢失

    .net给Image控件设置一个空图片路径的时候出现丢失cookie 比如说, img_path.ImageUrl ="../"+  ds.Tables[0].Rows[0][&q ...

  2. mongodb查询语句与sql语句对比

    左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * from users db.users.find({"age" ...

  3. [LeetCode]152. 乘积最大子序列(DP)

    题目 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. 示 ...

  4. CSDN博客图片水印自定义及去除方法

    小图上传说明 尺寸较小的图片上传后默认不加水印,而且默认水平居中显示.你可以更改markdown格式后面的#pic_center,这是设置图片水平对齐的方式.#pic_left就是左对齐,#pic_r ...

  5. 关于Mybaits

    mybatis 返回多表多字段用 mybatis 返回多表多字段用 resultType=”java.util.Map”轻松解决问题.不用加什么DTO.这样前端要什么字段就返回什么字段.不用在对多余的 ...

  6. Kubernetes K8S之Ingress详解与示例

    K8S之Ingress概述与说明,并详解Ingress常用示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C ...

  7. Jboss未授权访问漏洞复现

    一.前言 漏洞原因:在低版本中,默认可以访问Jboss web控制台(http://127.0.0.1:8080/jmx-console),无需用户名和密码. 二.环境配置 使用docker搭建环境 ...

  8. 微信小程序结合微信公众号进行消息发送

    微信小程序结合微信公众号进行消息发送 由于小程序的模板消息已经废弃了,官方让使用订阅消息功能.而订阅消息的使用限制比较大,用户必须得订阅.需要获取用户同意接收消息的权限.用户必须得和小程序有交互的时候 ...

  9. websocket+sockjs+stompjs详解及实例

    最近有项目需求要用到websocket,刚开始以为很简单,但是随着遇到问题,深入了解,才知道websocket并不是想象中的那么简单,这篇文章主要是考虑websocket在客户端的使用. 1.http ...

  10. 对抗生成网络 Generative Adversarial Networks

    1. Basic idea 基本任务:要得到一个generator,能够模拟想要的数据分布.(一个低维向量到一个高维向量的映射) discriminator就像是一个score function. 如 ...