zoukankan      html  css  js  c++  java
  • PHP拆分YAPI导出的swagjson文件

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

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

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

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

        <?php
        
        
        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);
    
  • 相关阅读:
    江の島西浦写真館2-1
    江の島西浦写真館1-2
    Oracle 查询表空间使用情况
    Oracle 的开窗函数 rank,dense_rank,row_number
    oracle11G 用户密码180天修改概要文件过程
    CentOS6 安装 MySQL5.7
    linux下SS 网络命令详解
    CentOS6 网络设置
    redhat 6 红帽6 Linux 网络配置
    Oracle分析函数——函数列表
  • 原文地址:https://www.cnblogs.com/xdao/p/php_yapi.html
Copyright © 2011-2022 走看看