2016-12-09 12 views
1

私は、Zircote Swagger PHPを使用してAPIを文書化することを検討しています。私はそれを使用することにコミットする前に、この質問に答えようとしてきたので、私はまだ完全にそれに精通していません。Swagger php - コードを分割せずにパブリック/プライベートAPIをフィルタリングする

2種類のドキュメントが必要です。 1つのドキュメントページにはすべてのAPIが含まれ、もう1つのドキュメントには公開されるべきAPIのみが含まれます。

this answer私が探している結果が多かれ少なかれわかりました。しかし、提案されているソリューションでは、公開APIと非公開APIの実装がまだ回答が示唆している方法で分割されていないため、既存のコードを大幅にリファクタリングする必要があります。

アノテーションに個々のAPIをタグ付けし、ドキュメントを生成するときにこれらのタグをフィルタする方法はありますか?

答えて

1

まだ実装されていませんが、PRは歓迎されると思います。

当面は、生成されたドキュメントを後処理することができます。シングルライナースルーそれをパイプ:

読みやすくするためにフォーマットする
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 

tag1tag2を除外するためのタグです
$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)); 

関連する問題