在网上找这个swagger应用的时候,全部几乎都是一个样,就是不行,都是说这样那样的,但是用在你身上就是不行,就是不行
首先不管那么多,直接拿来用,后面再慢慢研究吧
swagger有个ui,你下载吧,里面有个dist文件(不想下载email我,我发给你),直接拷贝放到项目根目录下,别想着放到什么什么好看的文件整理,别想,就放在根目录好了。
然后下载swagger-php,有些人就是分不清,ui还要什么php,什么鬼,好吧,多说一句,swagger UI是界面的展示,而swagger-php是生成接口文档的驱动,这么理解没问题吧,或者简单点,ui就是人家写好的html,swagger-php就是你的php语言。
好了不多说了,我的swagger-php放在根目录的一个vender目录下的,注意这句话,不然又的说没有用了(要文件找我)
文件都弄好了吧,在入口文件index.php加上一句话,就是引入swagger-php库文件,在引入ThinkPHP入口文件之前就可以了
//引入swagger-php导入文件
require './vendor/swagger-php/vendor1/autoload.php';
还没好哦,不是有个dist文件么,里面有个index.html,打开它(编辑器),
找到他
url = decodeURIComponent(url[1]);
在她else的分支上改成这个路径地址别说不会,就是项目直接指到dist的swagger.json就可以了,像这样
url = "http://127.0.0.1/xiangmuming/dist/swagger.json";
基本的就好了,然后到时候你访问http://127.0.0.1/xiangmuming/dist/idnex.html 就是swagger UI接口界面
但是如何生成接口呢,其实就是生成swagger.json,最老土的,也不老土,你觉得方便就好,你可以直接在swagger.json中直接写json文件都可以,如果不愿意的话就继续跟着走,如果你想手动写,就可以不用继续往下看了,已经可以了,okay,完美啦
不想写json的继续,但是也好烦的,不过看的会舒服一点或者说好管理一点
一般人写代码都会判断session存不存在啊,不存在就跳到登录界面啊 什么的 ,
所以你直接写到其他不跟session挂钩的地方吧,我是卸载LoginController下的,加如下代码:
public function createApi(){
//定义根目录
$path = __DIR__; //你想要哪个文件夹下面的注释生成对应的API文档
//echo $path;
$swagger = \Swagger\scan($path);
header('Content-Type: application/json');
//echo $swagger;
$swagger = (string) $swagger;
$swagger_json_path = "dist/swagger.json";
$res = file_put_contents($swagger_json_path,$swagger);
if ($res == true) {
//$this->redirect('http://'.$_SERVER['HTTP_HOST'].'/dist/index');
}
}
然后访问http://127.0.0.1/xiangmuming/Login/createApi
你的不行,我重写了index.php隐藏的,不行自己好好看看,里面代码自己一个个dump出来自己分析
然后提供一个接口怎么编写示例
/**
* @SWG\Post(path="/Login/getPhoneVerifyCode",
* tags={"1、【未登录】登录注册模块"},
* summary=" 获取手机验证码",
* description="获取验证码成功后返回data.wtime等待时间
* 状态码为200=》
* data.wtime:等待时间
* 手机接收不到,不需要300状态码",
*
* operationId="getPhoneVerifyCode",
* produces={"application/json"},
* @SWG\Parameter(name="uphone",type="string",require=true,in="formData",description="手机号码"),
* )
*/
好了,自己研究去,文件的什么直接可以找我,但是里面其他的自己研究,搞定收工!