L5 Swagger 使用說明


 

   網上看了看,關於這個擴展介紹很少。今天工作恰好用到,研究了一下,覺得有必要分享一下。

 

一、  簡介:

這個包是Swagger-php和Swagger-ui的封裝,適用於Laravel5。

二、版本要求

 Laravel> = 5.1

三、安裝

Laravel

Swagger UI

OpenAPI規范兼容性

L5 安裝命令

5.1.x版

2.2

1.1,1.2,2.0

php composer require "darkaonline/l5-swagger:~3.0"

5.2.x

2.2

1.1,1.2,2.0

php composer require "darkaonline/l5-swagger:~3.0"

5.3.x

2.2

1.1,1.2,2.0

php composer require "darkaonline/l5-swagger:~3.0"

5.4.x版本

2.2

1.1,1.2,2.0

php composer require "darkaonline/l5-swagger:~4.0"

5.4.x版本

3

2.0

php composer require "darkaonline/l5-swagger:5.4.*"

5.5.X

3

2.0

php composer require "darkaonline/l5-swagger:5.5.*"

或在composer.json中添加"darkaonline/l5-swagger": "~3.0"(以5.1為例),再執行composer update。

四、配置

打開config/app.php注冊一個門面,5.5以上的版本不用。

加入這一行providers節:L5Swagger \ L5SwaggerServiceProvider :: class,
運行php artisan l5-swagger:publish 這一步的意義是將包的內容發布。也可以使用php artisan l5-swagger:publish-config(生成配置文件),php artisan l5-swagger:publish-assets(生成根目錄文件夾),php artisan l5-swagger:publish-views(生成視圖層文件夾)分別發布。執行之后會在根目錄和視圖層生成一個vendor文件夾;並在config/下生成一個l5-swagger.php的文件,這里重點說一下這個文件,在這里可以指定標題,訪問路由,項目路由,生成文件即生成文件路由。可以在.env中設置環境變量如token,key等值。
注:如果在你的項目中你不需要資源文件可將其填入.gitignore中。如./public/vendor/l5-swagger,./resources/views/vendor/l5-swagger等文件每次請求都會生成一次。

五、使用

使用phpartisan l5-swagger:generate生成文檔,此時會在storage/api-docs,生成一個api-docs.json的文件,一會每次生成都會覆蓋此文件。如果需要開啟自動生成,可在配置文件或.env文件中設置generate_always參數為true。這個時候訪問你的項目域名+/ api / documentation。你會看到,如下頁面:

接下來我們建立一個swagger控制器,寫入如下測試數據:

<?php
 
namespace App\Http\Controllers;
 
use Swagger\Annotations\Info;
 
/**
 * @Info(
 *     title="My title",
 *     version="v1.0.0"
 * )
 */
class SwaggerController extends Controller
{
    /**
     * 假設是項目中的一個API
     *
     * @SWG\Get(path="/swagger/my-data",
     *   tags={"project"},
     *   summary="拿一些神秘的數據",
     *   description="請求該接口需要先登錄。",
     *   operationId="getMyData",
     *   produces={"application/json"},
     *   @SWG\Parameter(
     *     in="formData",
     *     name="reason",
     *     type="string",
     *     description="拿數據的理由",
     *     required=true,
     *   ),
     *   @SWG\Response(response="default", description="操作成功")
     * )
     */
    public function getMyData()
    {
 
    }
}

 

標紅部分@SWG \ Info是必需的,這里聲明了你的版本號,負責會報錯。生成文件看到如下:

接下來可設置中文,默認展開,取消默認圖標:

設置中文:

打開resources/views/vendor/index.blade.php

找的這一行:

// ...
 
    <!-- Some basic translations -->
    <!--<script src='lang/translator.js' type='text/javascript'></script>-->
    <!--<script src='lang/ru.js' type='text/javascript'></script>-->
    <!-- <script src='lang/en.js' type='text/javascript'></script> -->
 
// ...

改為:

<!-- Some basic translations -->

    <scriptsrc='{{config('l5-swagger.paths.assets_public')}}/lang/translator.js'type='text/javascript'></script>

<scriptsrc='{{config('l5-swagger.paths.assets_public')}}/lang/zh-cn.js'type='text/javascript'></script>

默認展開:

onFailure: function(data) {

                    console.log("Unableto Load SwaggerUI");

                },

               docExpansion: {!! isset($docExpansion) ? '"' . $docExpansion .'"' : '"none"' !!}

這里設置docExpansion: "none",
去掉error:
window.swaggerUi = new SwaggerUi({
        // ...
        
        validatorUrl: null, //添加這個配置
 });
接下來就可以正常使用了。


個人公眾號謝謝各位老鐵支持


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM