, (*1)
Swagger Documentation Generator for Yii2 Framework
Swagger/OpenAPI Documentation Generator for Yii2 Framework., (*2)
, (*3)
Installation
The preferred way to install this extension is through composer., (*4)
Either run, (*5)
php composer.phar require --prefer-dist yii2mod/yii2-swagger "*"
or add, (*6)
"yii2mod/yii2-swagger": "*"
to the require section of your composer.json., (*7)
Configuration
You need to configure two actions as follows:, (*8)
<?php
namespace app\controllers;
use Yii;
use yii\helpers\Url;
use yii\web\Controller;
/**
* @SWG\Swagger(
* basePath="/",
* produces={"application/json"},
* consumes={"application/x-www-form-urlencoded"},
* @SWG\Info(version="1.0", title="Simple API"),
* )
*/
class SiteController extends Controller
{
/**
* @inheritdoc
*/
public function actions(): array
{
return [
'docs' => [
'class' => 'yii2mod\swagger\SwaggerUIRenderer',
'restUrl' => Url::to(['site/json-schema']),
],
'json-schema' => [
'class' => 'yii2mod\swagger\OpenAPIRenderer',
// Тhe list of directories that contains the swagger annotations.
'scanDir' => [
Yii::getAlias('@app/controllers'),
Yii::getAlias('@app/models'),
],
],
'error' => [
'class' => 'yii\web\ErrorAction',
],
];
}
}
Usage
1) Creating a Controller, (*9)
First, create a controller class app\controllers\UserController
as follows:, (*10)
namespace app\controllers;
use app\models\User;
use yii\data\ActiveDataProvider;
use yii\rest\Controller;
/**
* Class UserController
*/
class UserController extends Controller
{
/**
* @SWG\Get(path="/user",
* tags={"User"},
* summary="Retrieves the collection of User resources.",
* @SWG\Response(
* response = 200,
* description = "User collection response",
* @SWG\Schema(ref = "#/definitions/User")
* ),
* )
*/
public function actionIndex()
{
$dataProvider = new ActiveDataProvider([
'query' => User::find(),
]);
return $dataProvider;
}
}
2) Creating User
definition, (*11)
You need to create folder app/models/definitions
and add User
definition class as follows:, (*12)
<?php
namespace app\models\definitions;
/**
* @SWG\Definition(required={"username", "email"})
*
* @SWG\Property(property="id", type="integer")
* @SWG\Property(property="email", type="string")
* @SWG\Property(property="username", type="string")
*/
class User
{
}
3) Configuring URL Rules, (*13)
Then, modify the configuration of the urlManager component in your application configuration:, (*14)
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
'GET,HEAD users' => 'user/index',
],
]
4) Enabling JSON Input, (*15)
To let the API accept input data in JSON format, configure the parsers property of the request application component to use the yii\web\JsonParser
for JSON input:, (*16)
'request' => [
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
]
Trying it Out
Now you can access to swagger documentation section through the following URL:, (*17)
http://localhost/path/to/index.php?r=site/docs, (*18)
View in the browser, (*19)
, (*20)
Support us
Does your business depend on our contributions? Reach out and support us on Patreon.
All pledges will be dedicated to allocating workforce on maintenance and new awesome stuff., (*21)