Yii2 swagger generator
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist fgh151/yii2-swagger "*"
or add
"fgh151/yii2-swagger": "*"
to the require section of your composer.json
file.
- Add module in config and set dirs with annotations
'modules' => [
'swagger' => [
'class' => fgh151\swagger\Module::class,
'sources' => [
dirname(__DIR__).'/controllers',
dirname(__DIR__).'/models',
]
],
],
- Add routes
'rules' => [
'/swagger/doc.json' => 'swagger/swagger/doc',
'/swagger/ui' => 'swagger/swagger/ui',
],
- Add controller. It can be not useful and has random name, but contain annotations. Example:
<?php
namespace app\controllers;
use OpenApi\Attributes\Info;
use OpenApi\Attributes\OpenApi;
use OpenApi\Attributes\Server;
use yii\web\Controller;
#[OpenApi(
info: new Info(version: '1.0.0', title: 'Super API title'),
)]
#[Server(url: 'https://api.example.com', description: 'Super API description')]
class SwaggerController extends Controller
{
}
- Add annotations to controllers and models. Example:
class SomeController extends \yii\web\Controller {
#[Get(path: '/magic', summary: 'Magic API method.')]
public function someAction() {
//Magic here
}
}
#[Schema(title: 'MyModel', description: 'Magic mode', properties: [
new Property(property: 'Id', description: 'Идентификатор', type: 'integer'),
])]
class MyModel extends ActiveRecord
{
}
See annotations