# yii2-swageer-gii **Repository Path**: wslys/yii2-swageer-gii ## Basic Information - **Project Name**: yii2-swageer-gii - **Description**: 整合yii2 + swagger + 自定义gii模板 快捷开发 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-02-17 - **Last Updated**: 2021-02-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # yii2-swageer-gii #### 介绍 **使用Yii框架整合swagger-php实现在线api文档, 并改写gii自动生成restful api接口, 生成对应的接口注释 以及模块生成** #### 安装教程 1. git clone git@gitee.com:wslys/yii2-swageer-gii.git 2. cd yii2-swageer-gii 3. composer install 4. 数据库 ./doc/install.sql 4. php yii serve --docroot="backend\web" 5. 访问 http://localhost:8080/giitpl #### 演示视频 #### 使用自定义的GII代码生成工具,生成 restful api Module 1. 访问 http://localhost:8080/giitpl/default/view?id=restmodule 2. 填写并完成模块的创建 3. 模块配置 ``` 模块配置 ... 'modules' => [ 'v2' => [ 'class' => 'backend\modules\v2\Module', ], ], #### 配置在线api doc 1. 修改SiteController.php【可自行定义在别的控制器中】 ``` 请在控制器 SiteController.php 中配置swagger接口文档的访问配置 public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'rules' => [ [ 'actions' => ['doc', 'api'], 'allow' => true, ], ], ], ]; } /** * {@inheritdoc} */ public function actions() { return [ 'doc' => [ 'class' => 'light\swagger\SwaggerAction', 'restUrl' => yii\helpers\Url::to(['/site/api'], true), ], 'api' => [ 'class' => 'light\swagger\SwaggerApiAction', 'scanDir' => [ Yii::getAlias('@backend/modules/v2/swagger'), Yii::getAlias('@backend/modules/v2/controllers'), Yii::getAlias('@backend/modules/v2/models'), ], 'api_key' => 'api', ], ]; } ``` 2. 访问在线api doc http://localhost:8080/site/doc #### 测试并体验通过自定义gii代码生成工具生成的Module 1. 调用登录接口获取登录成功的token 2. 将token字符串填写到Authorize中,既:swagger api页面中的小锁图标 3. 调用Module自动生成的default接口测试,登录是否OK 4. 若访问接口提示没有权限 ``` modules/base/RestApiBaseController.php // 权限检查 $actionId = $action->getUniqueId(); if (Yii::$app->user->can('/' . $actionId, Yii::$app->getRequest()->get())) { return true; } else { // 权限管理没做 return true; throw new ForbiddenHttpException('无权访问'); } ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 作者 1. yii 自带的代码生成工具 gii 不足以满足需求,故而将自己的一些心得记录下