Шаг 1. Устанавливаем необходимые библиотеки
Устанавливаем библиотеку zircote/swagger-php с помощью composer
composer require --dev zircote/swagger-php
Скачиваем https://github.com/swagger-api/swagger-ui и распаковываем содержимое папки dist в папку где будет находиться документация, например web/api-doc.
Добавляем аннотации к экшенам. Пример есть в документации и примерах (папки docs и examples) https://github.com/zircote/swagger-php. Это можно сделать и позже, но тогда документация будет пустая.
Пример аннотации:
/** * @OA\Info(title="My First API", version="0.1") */
Шаг 2. Создаем действие генерации документации на основе аннотаций для Swagger
Создаем контроллер Swagger, для генерации документации (controllers/SwaggerController):
<?php
namespace app\controllers;
use yii\console\Controller;
use Yii;
use function OpenApi\scan;
class SwaggerController extends Controller
{
public function actionGo()
{
$openApi = scan(Yii::getAlias('@app/modules/api/controllers'));
$file = Yii::getAlias('@app/web/api-doc/swagger.yaml');
$handle = fopen($file, 'wb');
fwrite($handle, $openApi->toYaml());
fclose($handle);
return ;
}
}
Где scan(Yii::getAlias('@app/modules/api/controllers')) - папка с кодом и аннотациями для документирования, здесь мы указали только один модуль для документирования.
$file = Yii::getAlias('@app/web/api-doc/swagger.yaml'); - папка в которую был скопирован swagger-ui/dist (в примере это: web/api-doc).
Или создаем консольное действие: (commands/SwaggerController):
<?php
namespace app\commands;
use yii\console\Controller;
use Yii;
use yii\console\ExitCode;
use yii\helpers\Console;
use function OpenApi\scan;
class SwaggerController extends Controller
{
public function actionGo()
{
$openApi = scan('@app/modules/api/controllers');
$file = Yii::getAlias('@web/api-doc/swagger.yaml');
$handle = fopen($file, 'wb');
fwrite($handle, $openApi->toYaml());
fclose($handle);
echo $this->ansiFormat('Created \n", Console::FG_BLUE');
return ExitCode::OK;
}
}
Запускаем через консоль
php yii swagger/go
Шаг 3. Правим настройки для Swagger
Далее открываем файл index.html в папке с документацией (в примере @app/web/api-doc/) И изменяем параметр url c "https://petstore.swagger.io/v2/swagger.json" ( url: "https://petstore.swagger.io/v2/swagger.json",), на "swagger.yaml" (url: "swagger.yaml",).
После запуска генерации документации, она будет доступна по пути http://сайт/api-doc (Путь может зависеть от ваших настроек .htacces, nginx, ...)
Если вы используете .htaccess из примеров этого сайта, то добавьте строку в корневого .htaccess:
RewriteRule ^api-doc/(.*)$ web/api-doc/$1 [L]
devreadwrite.com



Подборка адаптивных шаблонов для вашей CMS
Статьи по
Как получить и установить HTTPS сертификат на сайта

Комментарии
Комментарии отсутствуют, Вы можете быть первым