Swagger 文檔管理
官方網站:https://swagger.io/php
快速編寫你的 RESTFUL API
接口文檔工具,經過註釋定義接口和模型,能夠和代碼文件放置一塊兒,也能夠單獨文件存放。laravel
優點git
- 經過代碼註解定義文檔,更容易保持代碼文檔的一致性
- 模型複用,減小文檔冗餘,帶來更可靠的文檔
- 提供客戶端訪問接口,能夠直接調試接口,不須要第三方工具進行調用測試接口
- 支持權限認證,等功能
Laravel Swagger 擴展
擴展源代碼地址:https://github.com/DarkaOnLine/L5-Swaggergithub
1 |
composer require darkaonline/l5-swagger |
將會生成配置文件 l5-swagger.php
,其中須要注意的配置項json
routes.api
默認值爲api/documentation
Swagger 文檔系統訪問路由routes.docs
Swagger 解析註釋生成文檔 JSON 文件的存儲路徑paths.annotations
有效註釋的路徑配置,默認base_path('app')
應用路徑generate_always
測試環境應該開啓這個配置,每次訪問都會自動解析註釋生成最新的文檔swagger_version
這個默認爲 2.0 , 建議修改成 3.0
下文全部的註釋內容,須要存在於 paths.annotations
路徑下。api
接口版本
@OA\Info
定義接口版本,標題,描述,已經做者信息。app
1 |
/** |
接口請求方式與請求路徑
@OA\Get
,@OA\Post
定義接口請求方式composer
示例:根據USER_ID
請求用戶詳情信息 /api/users/{user_id}
接口分組配置:tags
,將會對接口歸類ide
1 |
/** |
接口請求參數
經過 Swagger 能夠定義三類參數,path
,header
,query
工具
- path, 參數存在 endponit 中,如,/users/{user_id}
- header, 參數存在請求頭部,如,token 用戶校驗令牌
- query, 請求參數帶在請求URL上,如,/users?nickname={nickname}
1 |
/** |
POST 提交表單,一般使用 application/json
方式,如,建立用戶
@OA\Post
path=/users
1 |
/** |
Schema 模型定義
上面的註釋中,屢次引用 @OA\Schema(ref="#/components/schemas/UserModel")
1 |
/** |
Laravel-Swagger 會自動根據您的註釋進行匹配
上傳文件接口示例
定義一個接口,接收上傳文件,並返回結果遠程文件地址
接口定義:
1 |
/** |
模型定義:
1 |
/** |
訪問 api/documentation
效果如圖
try it out
上傳文件操做結果
須要權限認證的接口
通常對外網開放的接口,須要添加權限控制,Swagger 提供很好的支持
在 l5-swagger.php
配置文件中添加, crypt-token
定義請求頭部必須添加 token
做爲權限校驗令牌。
1 |
'security' => [ |
接口註釋中,添加對應的驗證方式:
1 |
/** |
更多 Swagger3 定義字段描述,能夠查看官方文檔:https://swagger.io/specification/#parameterObject