• 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);
    
  • 相关阅读:
    Linux 系统下10个查看网络与监听的命令
    Linux下用gdb 调试、查看代码堆栈
    GPIO引脚速度的应用匹配
    编写安全的代码——小心有符号数的右移操作
    C语言实现类似C++的容器vector
    求字符串长度之递归与非递归的C语言实现
    字符串拷贝函数递归与非递归的C语言实现
    WriteLogHelper
    JsonHelper
    ConfigHelper
  • 原文地址:https://www.cnblogs.com/xdao/p/php_yapi.html
Copyright © 2020-2023  润新知