Swagger фильтрует публичные / приватные API без разделения кода

Я рассматриваю возможность использования Zircote Swagger PHP для документирования API. Я еще не полностью знаком с ним, так как я пытался ответить на этот вопрос, прежде чем использовать его.

Я хочу два разных комплекта документации. На одной странице документа будут указаны все наши API, а на другой — только те 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

Форматирование для удобства чтения:

$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));

куда tag1 а также tag2 являются тегами для исключения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]