2016-12-09 36 views
1

我正在考虑使用Zircote Swagger PHP来记录API。我还没有完全熟悉它,因为在承诺使用它之前,我一直试图回答这个问题。我想要两组不同的文档。一个文档页面将包含我们所有的API,另一个文档页面将只包含那些应公开记录的API。我发现this answer或多或少的给我我要找的结果然而,他们建议的解决方案要求我重构现有的代码,因为我们的公共和私有API的实现尚未按照答案的建议分解。Swagger php - 在不拆分代码的情况下过滤公共/私有API

有没有一种方法可以在注释中标记各个API,并在生成文档时过滤这些标签?

回答

1

它尚未实施,但我相信公关将受到欢迎。

暂时您可以对生成的文档进行后期处理,例如,管道直通其单衬:

swagger /path/to/project | php -r '$s = json_decode(file_get_contents("php://stdin"),true);array_walk($s["paths"],function(&$p){$p=array_filter($p,function($m){return count(array_intersect(["tag1","tag2"],$m["tags"]))==0;});});file_put_contents("php://stdout",json_encode($s,192));' > public.json 

格式化为可读性:

$s = json_decode(file_get_contents("php://stdin"), true); 
array_walk(
    $s["paths"], 
    function (&$path) { 
     $path = array_filter(
      $path, 
      function ($method) { 
       return count(array_intersect(["tag1", "tag2"], $method["tags"])) == 0; 
      } 
     ); 
    } 
); 
file_put_contents("php://stdout", json_encode($s, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); 

tag1tag2是标签排除。

相关问题