【问题标题】:Swagger php - filtering public/private APIs without splitting up codeSwagger php - 在不拆分代码的情况下过滤公共/私有 API
【发布时间】:2016-12-09 11:09:42
【问题描述】:

我正在考虑使用 Zircote Swagger PHP 来记录 API。我还不完全熟悉它,因为我在承诺使用它之前一直在尝试回答这个问题。

我想要两组不同的文档。一个文档页面将包含我们所有的 API,而另一个文档页面将仅包含那些应该公开记录的 API。

我找到了this answer,它或多或少地为我提供了我正在寻找的结果。但是,他们建议的解决方案要求我对现有代码进行重大重构,因为我们的公共和私有 API 的实现还没有按照答案建议的方式分开。

有没有办法在注释中标记单个 API,并在生成文档时过滤这些标记?

【问题讨论】:

    标签: php swagger swagger-php


    【解决方案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
    

    为了可读性而格式化:

    $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 是要排除的标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 2012-06-08
      • 2014-11-03
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多