zoukankan      html  css  js  c++  java
  • 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、在public根目录新建一个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/public/swaggerApi/swagger.json

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

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

    <?php
    namespace appindexcontroller;
    use thinkController;
    class Index extends Controller
    {
        public function index(){
            $path = '../application'; //你想要哪个文件夹下面的注释生成对应的API文档
            $swagger = Swaggerscan($path);
            // header('Content-Type: application/json');
            // echo $swagger;
            $swagger_json_path = '../public/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>

     //PHP中注释的写法

    <?php
    /**
     * @see https://github.com/zircote/swagger-php/tree/2.x/Examples/
     * @SWGSwagger(
     *     basePath="/v1/",
     *     host="api.example.com",
     *     schemes={"http"},
     *     produces={"application/json"},
     *     consumes={"application/json"},
     *     @SWGInfo(
     *         version="1.0.0",
     *         title="EXAMPLE WEB API",
     *         description="接口地址:http://api.example.com/",
     *         termsOfService="",
     *         @SWGContact(name="PHP Team"),
     *         @SWGLicense(name="")
     *     ),
     *     @SWGDefinition(
     *         definition="Error",
     *         type="object",
     *         required={"code", "msg"},
     *         @SWGProperty( property="code", type="integer", description="响应状态", example="0"),
     *         @SWGProperty( property="message", type="string", description="响应消息", example="操作失败"),
     *     ),
     *     @SWGDefinition(
     *         definition="Success",
     *         type="object",
     *         required={"code", "msg"},
     *         @SWGProperty( property="code", type="integer", description="响应状态", example="1"),
     *         @SWGProperty( property="message", type="string
     * ", description="响应消息", example="操作成功"),
     *     ),
     * )
     */
    class ApiController
    {
        
    }

     注释的相对比较详细的文档:https://learnku.com/laravel/t/7430/how-to-write-api-documents-based-on-swagger-php#747b67

  • 相关阅读:
    Python实现栈、队列、双端队列
    Redis主从配置、数据持久化、集群
    Redis安装,数据类型及常用命令
    nginx+uwsgi环境部署
    Nginx负载均衡、location匹配
    Nginx安装、多域名访问
    Linux-mysql的备份与恢复
    Linux-mysql主从复制
    Python dumps()的使用
    Python rpush()函数
  • 原文地址:https://www.cnblogs.com/ziyandeyanhuo/p/11224962.html
Copyright © 2011-2022 走看看