项目采用了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);