yii2mod / yii2-swagger
为 Yii2 框架的 Swagger 文档生成器
1.1.1
2017-10-19 14:33 UTC
Requires
- php: >=7.1.0
- bower-asset/swagger-ui: ^3.1
- yiisoft/yii2: ~2.0.12
- zircote/swagger-php: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ~2.0
- phpunit/phpunit: ~6.0
This package is not auto-updated.
Last update: 2024-09-15 04:42:04 UTC
README
为 Yii2 框架的 Swagger 文档生成器
为 Yii2 框架的 Swagger/OpenAPI 文档生成器。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令:
php composer.phar require --prefer-dist yii2mod/yii2-swagger "*"
或者添加以下内容到你的 composer.json 的 require 部分:
"yii2mod/yii2-swagger": "*"
配置
您需要按照以下方式配置两个动作
<?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', ], ]; } }
用法
- 创建控制器
首先,创建一个控制器类 app\controllers\UserController
,如下所示:
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; } }
- 创建
User
定义
您需要创建文件夹 app/models/definitions
并添加 User
定义类,如下所示:
<?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 { }
- 配置 URL 规则
然后,修改您应用程序配置中 urlManager 组件的配置
'urlManager' => [ 'enablePrettyUrl' => true, 'enableStrictParsing' => true, 'showScriptName' => false, 'rules' => [ 'GET,HEAD users' => 'user/index', ], ]
- 启用 JSON 输入
为了使 API 能够接受 JSON 格式的输入数据,配置请求应用程序组件的 parsers 属性以使用 yii\web\JsonParser
进行 JSON 输入
'request' => [ 'parsers' => [ 'application/json' => 'yii\web\JsonParser', ] ]
尝试一下
现在您可以通过以下 URL 访问 Swagger 文档部分:
http://localhost/path/to/index.php?r=site/docs
在浏览器中查看
支持我们
您的业务是否依赖于我们的贡献?通过 Patreon 联系我们并支持我们。所有承诺都将专门用于分配人力以维护和新奇事物。