项目采用了Yapi做为文档管理工具,可是由于之前没有划分好模块,结果文档都写到一起了,导致查看文档不方便。

研究Yapi,发现不能移动分组,而且只能导出项目下的所有接口,于是导出文件,研究后发现文档里的文件夹是使用tag来表示的,于是想到可以把按照tag,导出成单个json文件,然后新建项目,再导入生产的json文件。

处理json的话,还是PHP方便,代码如下:

用法 php yapi.php /path/yourjsonfile /path/output/ ,注意导出目录最后得有'/'

function buildCommon($json)

{

$common = [

'swagger' => $json['swagger'],

'info' => $json['info'],

'basePath' => $json['basePath'],

'tags' => [],

'schemes' => $json['schemes'],

'paths' => [],

];

return $common;

}

function buildContent($json, $common, $outDir)

{

$paths = array_keys($json['paths']);

$orignTags = $json['tags'];

foreach ($orignTags as $tIndex => $tag) {

$result = $common;

foreach ($paths as $pIndex => $path) {

if (isset($json['paths'][$path]['post'])) {

$tags = $json['paths'][$path]['post']['tags'];

} else {

$tags = $json['paths'][$path]['get']['tags'];

}

if (in_array($tag['name'], $tags)) {

$result['paths'][$path] = $json['paths'][$path];

}

}

file_put_contents($outDir.$tag['name'].'.json',json_encode($result,JSON_UNESCAPED_UNICODE));

}

}

function main($param)

{

if (count($param) != 3) {

die("param error, example: sw.php input.json outputdir");

}

$content = file_get_contents($param[1]);

$json = json_decode($content, true);

if (!$json) {

die('input.json wrong');

}

$common = buildCommon($json);

buildContent($json, $common, $param[2]);

}

main($argv);

php拆分jsion_PHP拆分YAPI导出的swagjson文件相关推荐

  1. SOA和微服务之间的区别(应用和数据的垂直拆分水平拆分)

    目录 引出问题 重要概念 垂直拆分 水平拆分 同步分层架构 异步分层架构 SOA是什么? 微服务是什么? 数据库拆分 写在最后 引出问题 互联网发展迅猛,互联网系统也由原来的单机服务逐步的演化为分布式 ...

  2. [react] React如何进行代码拆分?拆分的原则是什么?

    [react] React如何进行代码拆分?拆分的原则是什么? 这里我认为react的拆分前提是代码目录设计规范,模块定义规范,代码设计规范,符合程序设计的一般原则,例如高内聚.低耦合等等. 在我们的 ...

  3. 怎么把pdf拆分成一页一页的单独文件?

    在日常的办公中总会有各种场景衍生出来的各种文件操作技巧.比如面对一份页数很多的PDF文件,而我们需要取其中的一部分传输给领导或同事,如果我将整份的PDF文件进行传输,势必显得自己工作不到位,也不专业, ...

  4. 数据库垂直拆分 水平拆分

    转载:https://www.cnblogs.com/firstdream/p/6728106.html 数据库拆分简单来说,就是指通过某种特定的条件,按照某个维度,将我们存放在同一个数据库中的数据分 ...

  5. pdf文件在线拆分如何拆分?

    PDF文件有时会很大,我们就会拆分,PDF文件在线拆分如何拆分?拆分能很好地保留一些文件,质量还是一样,所以在线拆分是很好的方法. 1在百度中去搜索关键词迅捷pdf在线转换器,然后开始分割 2进入后, ...

  6. 数据库表的垂直拆分/水平拆分

    垂直拆分 1. 垂直拆分的定义 所谓的垂直拆分,就是把原来一个有很多列的表拆分成多个表,这解决了表的宽度问题. 2. 垂直拆分的原则: 1. 把不常用的字段表单独存放到一个表中. 2. 把大字段独立存 ...

  7. 服务器怎么导出数据库文件,怎么导出服务器数据库文件

    怎么导出服务器数据库文件 内容精选 换一换 确认后点击确认即可,导出内容参考表1.选择界面 MongoDB官网提供了针对不同操作系统的客户端安装包,其二进制安装包下载页面链接为:https://www ...

  8. 如何优化百万级别数据导出(excel 文件)

    如何优化百万级别数据导出(excel 文件) 背景 未优化前存在的问题 业务接口流程 优化后 业务接口流程(优化版v1) 业务接口流程(优化版v2) 优化效果 复盘 宏观层面 遇到的困难 收获 代码实 ...

  9. java导出为excel文件_java导出数据到excel文件

    有的时候,将一些有用的数据导出到excel是很有必要的.比如说,我现在在做一个学校的在线教学平台,有一个需求是:将学生成绩导出到excel文件中去. 那怎样实现用java导出数据到excel文件呢?? ...

最新文章

  1. 两个月入门深度学习,全靠动手实践!一位前端小哥的经验分享
  2. python生成器、迭代器、__call__、闭包简单说明
  3. adb命令 android 串口_ADB使用linux命令查看Android的使用情况
  4. 解决安装SQL Server 2005开发版时,出现“SQL Server 服务无法启动 ”点击重试或取消的解决方法
  5. ros发布节点信息python_vscode开发ROS1(13)-python实现话题通信(msg)
  6. Mongodb 分片与副本集
  7. 【bzoj 2434】【codevs 1946】[Noi2011]阿狸的打字机(AC自动机)
  8. linux 桌面使用体验 远程访问win for linux
  9. DevOps看起来很美,实现起来却很难?
  10. 搜索结果红色php,.NET_asp.net搜索匹配关键字为红色显示的代码,首先创建类库 Model (业务实体 - phpStudy...
  11. 【优化算法】自治群体粒子群优化算法(AGPSO)【含Matlab源码 1450期】
  12. 面向对象的oop编程思想
  13. centos安装部署webssh
  14. ORACLE US7ASCII编码 读取时乱码问题
  15. java io流过滤流_JAVA io流 文件流 字节流 字符流 过滤流 缓冲流
  16. css解决图片缩小变模糊问题
  17. 三星S508手机DIY图文教程全攻略
  18. GIS开发:推荐Mapbox gl解决方案
  19. 大三老学姨想说。。。
  20. 计算机专业的英语复试自我介绍,计算机专业复试英语自我介绍

热门文章

  1. 【深度学习】sigmoid - 二次代价函数 - 交叉熵 - logistic回归 - softmax
  2. 【面向代码】学习 Deep Learning Convolution Neural Network(CNN)
  3. Java中六大时间类的使用和区别
  4. 自己动手实现的 Spring IOC 和 AOP - 上篇
  5. 数据结构之并查集Union-Find Sets
  6. 程序员面试题精选100题(22)-整数二进制表示中1的个数[算法]
  7. Go 语言简介(上)— 语法
  8. 云计算平台管理的三大利器Nagios、Ganglia和Splunk
  9. 2018-2019-2 20165330《网络对抗技术》Exp9 Web安全基础
  10. jvm内存模型及分配