tp5和swagger

Posted ziyandeyanhuo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tp5和swagger相关的知识,希望对你有一定的参考价值。

1、首先安装composer和git

2、在宝塔中新建个域名:www.tpsw.com

3、安装tp5.0

composer create-project topthink/think=5.0.* tp5 --prefer-dist

4、将tp5的文件放在根目录

6、打开tp下的composer.json修改:

"require":
  "php": ">=5.4.0",
  "topthink/framework":"^5.0"
,

//在require后增加zircote/swagger-php

"require":
  "PHP": ">=5.4.0",
  "topthink/framework":"^5.0",    
   "zircote/swagger-php" :"*"
,

之后在根目录运行

composer update

等待安装完成后或者直接在打开命令窗口之后运行

composer require zircote/swagger-php

提示安装完成后执行

composer global require zircote/swagger-php

在vendor中会生成一个zircote组件文件夹,说明插件安装成功了

7、在根目录新建一个swaggerApi文件夹存储生成的swagger.json

8、执行命令:

php /www/wwwroot/tp/vendor/zircote/swagger-php/bin/swagger  /www/wwwroot/tp/vendor/zircote/swagger-php/Examples -o  /www/wwwroot/tp/swaggerApi/swagger.json

第一个路径是你安装成功后组件的路径;第二个路径是你想要生成这个目录下所有swagger方式注释的PHP文件,把所有注释生成api文档,第三个路径是存放生成swagger.json的路径。

可以写个控制器,每次访问时重新生成json文件并且打开swagger

<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller

    public function index()
        $path = ‘/www/wwwroot/tp/application‘; //你想要哪个文件夹下面的注释生成对应的API文档
        $swagger = \Swagger\scan($path);
        // header(‘Content-Type: application/json‘);
        // echo $swagger;
        $swagger_json_path = ‘/www/wwwroot/tp/swaggerApi/swagger.json‘;
        $res = file_put_contents($swagger_json_path, $swagger);
        if ($res == true) 
           $this->redirect(‘http://www.tpswagger.com/swagger-ui/dist/index.html);
        
    
 

>

第二安装swagger

在public文件夹下安装swagger,

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

安装完成后打开dist目录,打开index.html文件

<script>
    window.onload = function() 
      // Begin Swagger UI call region
      const ui = SwaggerUIBundle(
        url: "http://www.tpswagger.com/swaggerApi/swagger.json",//更改此url为你tp5内生成的json文件
        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>

 

以上是关于tp5和swagger的主要内容,如果未能解决你的问题,请参考以下文章

API接口文档利器:Swagger

tp5和swagger

tp5总结

tp5搭建1

tp5总结

TP5新建模块和访问