yii2mod/yii2-swagger

为 Yii2 框架的 Swagger 文档生成器

安装次数: 283,545

依赖者: 8

建议者: 0

安全: 0

星星: 63

观察者: 5

分支: 31

公开问题: 13

类型:yii2-extension

1.1.1 2017-10-19 14:33 UTC

This package is not auto-updated.

Last update: 2024-09-15 04:42:04 UTC


README

为 Yii2 框架的 Swagger 文档生成器


为 Yii2 框架的 Swagger/OpenAPI 文档生成器。

Latest Stable Version Total Downloads License Build Status

安装

安装此扩展的首选方式是通过 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',
            ],
        ];
    }
}

用法

  1. 创建控制器

首先,创建一个控制器类 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;
    }
}
  1. 创建 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
{
}
  1. 配置 URL 规则

然后,修改您应用程序配置中 urlManager 组件的配置

'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        'GET,HEAD users' => 'user/index',
    ],
]
  1. 启用 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

在浏览器中查看

Alt text

支持我们

您的业务是否依赖于我们的贡献?通过 Patreon 联系我们并支持我们。所有承诺都将专门用于分配人力以维护和新奇事物。