# laravel 安裝 swagger ## 官方 git ```bash!= https://github.com/DarkaOnLine/L5-Swagger ``` ## 安裝 L5-Swagger 套件 ```bash!= composer require "darkaonline/l5-swagger" ``` ## 發布 L5-Swagger 配置文件 ```bash!= php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider" ``` ## 配置 Swagger 可以打開 config/l5-swagger.php 目錄,根據需要的内容進行配置。你可以設置 API 文檔的基本信息,如標題、版本等。 ## 生成 Swagger 文檔 ```bash!= php artisan l5-swagger:generate ``` ``` php artisan l5-swagger:generate system_api_docs ``` # 使用方式 ## 在 Controllers 中添加 Swagger 註釋 首先,您需要在控制器中添加 Swagger 註釋。這些註釋將用於生成 API 文檔。 例如,在 `app/Http/Controllers/UserController.php` 中: ```php!= /** * @OA\Info( * title="我的 API 文檔", * version="1.0.0", * description="這是一個示例 API 文檔" * ) */ class UserController extends Controller { /** * @OA\Get( * path="/api/users", * summary="獲取所有用戶", * @OA\Response(response="200", description="成功獲取用戶列表") * ) */ public function index() { // 方法實現 } /** * @OA\Post( * path="/api/users", * summary="創建新用戶", * @OA\RequestBody( * @OA\JsonContent( * @OA\Property(property="name", type="string"), * @OA\Property(property="email", type="string") * ) * ), * @OA\Response(response="201", description="用戶創建成功") * ) */ public function store(Request $request) { // 方法實現 } } ``` 這裡的註釋說明: * @OA\Info: 定義 API 文檔的基本信息。 * @OA\Get 和 @OA\Post: 定義 HTTP 方法和路徑。 * @OA\Response: 描述可能的響應。 * @OA\RequestBody: 描述請求體的結構。 ## 在路由文件中添加 Swagger UI 路由 在 routes/web.php 或 routes/api.php 中添加以下路由: :::warning 新版的 Swagger 可以不用添加,經過在 laravel 11 測試可以不加進行訪問 ::: ``` Route::get('/api/documentation', '\L5Swagger\Http\Controllers\SwaggerController@api')->name('l5swagger.api'); ``` 這將創建一個訪問 Swagger UI 的路由。 # 配置 Swagger UI ## 在 config/l5-swagger.php 文件中,您可以進行更多自定義配置 ``` 'routes' => [ 'api' => 'api/documentation', ], 'paths' => [ 'docs_json' => 'api-docs.json', 'docs_yaml' => 'api-docs.yaml', 'annotations' => [ base_path('app'), ], ], 'generate_always' => env('L5_SWAGGER_GENERATE_ALWAYS', false), ``` 這些配置的含義: * routes.api: 設置 Swagger UI 的訪問路徑。 * paths.docs_json 和 paths.docs_yaml: 設置生成的文檔文件名。 * paths.annotations: 指定要掃描的目錄以查找 Swagger 註釋。 * generate_always: 設置是否在每次請求時重新生成文檔。 # 生成 API 文檔 每次更新 API 註釋後,您需要重新生成文檔: ``` php artisan l5-swagger:generate ``` or 可以在 env 添加自動生成文檔 ``` L5_SWAGGER_GENERATE_ALWAYS=true # 是否自動生成 Swagger文檔 ``` # 訪問 Swagger UI 完成以上步驟後,您可以通過訪問 http://your-app-url/api/documentation 來查看生成的 API 文檔。 最佳實踐 * 保持文檔更新:每次修改 API 時,都要更新相應的 Swagger 註釋。 * 使用模型定義:對於複雜的數據結構,可以使用 `@OA\Schema` 來定義模型。 * 分組 API:使用 `@OA\Tag` 來組織和分類您的 API。 * 添加授權信息:如果您的 API 需要認證,可以使用 `@OA\SecurityScheme` 來定義認證方式。 * 使用環境變量:將一些配置項(如基礎 URL)設置為環境變量,以便在不同環境中靈活使用。 # 呈現 ![2024-07-16 110800](https://hackmd.io/_uploads/rkNQnEUOC.png) ![2024-07-16 110737](https://hackmd.io/_uploads/r1bhhNIuR.png) ![2024-07-16 111831](https://hackmd.io/_uploads/Byn9nELOR.png)