php安装swagger的一些事

2020-04-08  本文已影响0人  才不是小小喵
  1. 首先composer安装swagger-php
composer require zircote/swagger-php:2.0.*
  1. 安装swagger-ui 在安装swagger-ui的时候可以吧里面的dist文件夹整个拎出来放在public下
#github下载地址
https://github.com/swagger-api/swagger-ui.git
<script>
    window.onload = function() {
      // Begin Swagger UI call region
      const ui = SwaggerUIBundle({
        url:"http://local.test.com/index/swagger/",
        // url:"../../application/swagger-docs/swagger.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>
  1. 以TP5为例代码部分 这里我的处理方法是直接生成swagger.json
namespace app\index\controller;

use Exception;
use think\Controller;
use Swagger\Annotations as SWG;

class Index extends Controller
{
/**
     * @SWG\Swagger(
     * schemes={"http"},
     * host="local.test.com",
     * basePath="/",
     * @SWG\Info(
     * title="API文档",
     * version="1.0.0",
     * )
     * )
     * @throws \think\Exception
     * 生成swagger.json文件
     */
    public function index()
    {
        $realpath = realpath(__DIR__ ."../../../");
        $swagger = \Swagger\scan($realpath);
        try {
            $swagger_path = $realpath."/swagger-docs/swagger.json";
            $res = file_put_contents($swagger_path, $swagger);
            return $res;
        } catch (Exception $e) {
            $this->error($e->getMessage());
        }
    }
}

单独的读取json文件当然这里只是测试所以只是简单写了一点

namespace app\index\controller;


use think\Controller;

class Swagger extends Controller
{

    /**
     * 读取swagger.json并被调用
     * @return false|string
     */
    public function index()
    {
        $realpath = realpath(__DIR__ ."../../../");
        $swagger_path = $realpath."/swagger-docs/swagger.json";
        $swagger_data = file_get_contents($swagger_path);
        return $swagger_data;
    }


}
  1. 在上面进行输出的时候可能会出现以下报错 使用以下方法我个人的是解决了报错
>php vendor\zircote\swagger-php\bin\swagger application\index\controller -o application\swagger-docs
  1. 完成展示
    此时swagger.json里面应该有数据
    image.png
    访问该连接应该会出现http://local.test.com/swagger/index.html
    image.png
上一篇下一篇

猜你喜欢

热点阅读