零艺江湖 - 行到水穷处,坐看云起时 | 个人生活记录 | 零艺客 - Swagger
序[scode type="share"]最近写的项目基本都基于前后端分离，写完接口还要去编写文档，两边折腾太累了，找了这么个解决方案Swagger-php，能够在写接口的时候通过注解的方式实现自动生成文档，花了不少时间总算折腾出来了，记录下！[/scode]技术点[scode type="yellow"]1.composer//更新指令 composer update 2.swagger-ui//git下载 git clone https://github.com/swagger-api/swagger-ui.git 3.swagger-php[/scode]安装步骤[scode type="blue"]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文件 在控制器中新建方法，使上方文档能读取到json数据 public function swagger() { echo file_get_contents(APP_PATH . '/swagger-docs/swagger.json'); } [/scode]