技术点


1.composer

//更新指令
composer update

2.swagger-ui

//git下载
git clone https://github.com/swagger-api/swagger-ui.git

3.swagger-php

安装步骤


1.安装swagger-php后端
进入你的tp5框架找到根目录下,打开composer.json找到require项,添加一行(注意,每行用逗号分隔)。

"zircote/swagger-php": "*"

使用更新命令

composer update

使用安装指令(这里安装以下这个版本,测试时安装了N个版本,唯独这个成功了( ╯□╰ ))

composer require "zircote/swagger-php:2.0.13"

2.生成swagger.json文件(这里需要先建立存放swagger.json的文件夹swagger-docs,这个文件夹名称随意,存放位置也随意 )

//第1个路径是你安装成功后组件的路径;
//第2个路径是你想要生成这个目录下所有用swagger方式注释的php文件,把所有注释生成api文档;
//第3个路径是你存放生成swagger.json的路径。
php ./vendor/zircote/swagger-php/bin/swagger ./vendor/zircote/swagger-php/Examples -o ./swagger-docs/swagger.json

3.swagger-ui加载生成的json文件

<?php
namespace app\index\controller;
use think\Controller;
use Swagger\Annotations as SWG;
class Index extends Controller
{
    public function index(){
        // APP_PATH tp框架5.1不再提供常量,自己定义根目录
        // 测试dome在vendor/zircote/swagger-php/Examples/dynamic-reference 自行复制测试
        $path = APP_PATH.'/application/dynamic-reference'; //你想要哪个文件夹下面的注释生成对应的API文档
        $swagger = \Swagger\scan($path);
        $swagger_json_path = APP_PATH.'/swagger-docs/swagger.json';
        // 检测模板目录
        $dir = dirname($swagger_json_path);
        if (!is_dir($dir)) {
            mkdir($dir, 0755, true);
        }
        // 更新文档
        $myfile = fopen($swagger_json_path, "w") or die("Unable to open file!");
        $swagger=json_encode($swagger, true);
        fwrite($myfile, $swagger);
        fclose($myfile);
        // 跳转到文档页面
        $this->redirect('/swagger-ui/index.html');
    }
}

5.下载swagger-ui
执行下面命令

git clone https://github.com/swagger-api/swagger-ui.git

克隆下来后将dist文件夹内的文件 复制到例如public目录下新建文件夹Swagger-Ui中,修改Swagger-Ui中的index.html文件

  <script>
    window.onload = function () {
      // Begin Swagger UI call region
      const ui = SwaggerUIBundle({
        url: "/swagger",//swagger.json数据api接口
        dom_id: '#swagger-ui',
        deepLinking: true,
        presets: [
          SwaggerUIBundle.presets.apis,
          SwaggerUIStandalonePreset
        ],
        plugins: [
          SwaggerUIBundle.plugins.DownloadUrl
        ],
        layout: "StandaloneLayout"
      })
      // End Swagger UI call region

      window.ui = ui
    }
  </script>

在控制器中新建方法,使上方文档能读取到json数据


public function swagger()
{
        echo file_get_contents(APP_PATH . '/swagger-docs/swagger.json');
}

Last modification:October 12th, 2020 at 09:51 pm
如果觉得我的文章对你有用,请随意赞赏