預期學習目標php
# 在默認路徑下建立路由 php artisan make:controller Controller # 在默認路徑下建立路由等價與如下命令 php artisan make:controller App\\Http\\Controllers\\Controller # 在默認路徑下建立路由等價與如下命令 php artisan make:controller 'App\Http\Controllers\Controller' # 自定義命名空間 php artisan make:controller 'App\Api\Auth\Controller'
Laravel
的路由不一樣與 ThinkPHP
的默認路由規則, Laravel
須要定義控制器路由html
查看路由定義狀況 :
php artisan route:list
+--------+----------+-----+------+---------+------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+-----+------+---------+------------+ | | GET|HEAD | / | | Closure | web | +--------+----------+-----+------+---------+------------+
# 數據構造器 php artisan make:seeder DataSeeder
Swagger-php 提供的 openapi 能夠在 CLI (命令行) 中執行生成元數據,全局安裝的意義就在此,能夠直接使用openapi
而不是全路徑git
# 直接下載倉庫代碼 https://github.com/swagger-api/swagger-editor.git # 使用包管理工具安裝 composer require zircote/swagger-php # 指定版本 composer require zircote/swagger-php 2.0.13 # 使用包管理工具安裝在全局 composer global require zircote/swagger-php # 使用包管理工具安裝 composer install
元數據(Metadata),又稱中介數據、中繼數據,爲描述數據的數據(data about data),主要是描述數據屬性(property)的信息,用來支持如指示存儲位置、歷史數據、資源查找、文件記錄等功能。github
將代碼註釋生轉化爲元數據
# openapi的用法 .\vendor\bin\openapi --help Usage: openapi [--option value] [/path/to/project ...] Options: --output (-o) Path to store the generated documentation. ex: --output openapi.yaml --exclude (-e) Exclude path(s). ex: --exclude vendor,library/Zend --bootstrap (-b) Bootstrap a php file for defining constants, etc. ex: --bootstrap config/constants.php --processor Register an additional processor. --format Force yaml or json. --debug Show additional error information. --help (-h) Display this help message. # 生成指定文件的元數據(yaml格式)到指定位置 vendor\bin\openapi vendor\zircote\swagger-php\Examples\ -o public\swagger-ui\dist\ # 生成指定文件的元數據(json格式)到指定位置 vendor\bin\openapi vendor\zircote\swagger-php\Examples\ -o public\swagger-ui\dist\ --format json
git clone https://github.com/swagger-api/swagger-ui.git
web
須要用到的只有 dist
這個文件夾,能夠單獨部署,也能夠放在 public
文件夾內,爲了不讀取元數據
的跨域問題,將元數據
保存在同個位置npm
將本地元數據轉化爲API文檔
# 安裝 http-server 環境 npm install -g http-server # 開啓服務並容許跨域資源共享 http-server --cors # 瀏覽器打開 Swagger-UI 的界面 http://127.0.0.1:8080/ltf/public/swagger-ui/dist/ # 將本地元數據轉化爲API文檔 http://127.0.0.1:8080/ltf/public/swagger-ui/dist/openapi.yaml
上圖劃線位置根據輸入的元數據
文件路徑
生成API文檔,多個項目時即是在這裏根據元數據
文件路徑
切換API文檔json
Swagger-UI
默認會將元數據
傳給 swagger.io
進行格式驗證,因爲是公司內部項目因此關閉驗證功能bootstrap
# 在 index.html 中添加 validatorUrl: null 關閉驗證功能 const ui = SwaggerUIBundle({ validatorUrl: null, url: "openapi.yaml", dom_id: '#swagger-ui', deepLinking: true, presets: [ SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset ], plugins: [ SwaggerUIBundle.plugins.DownloadUrl ], layout: "StandaloneLayout" })
如上代碼中的 url: "openapi.yaml"
,本來是 https://petstore.swagger.io/v2/swagger.json
官方提供的示例segmentfault
# 建立一個控制器 php artisan make:controller SwaggerController # 添加註釋以及實現掃描功能 /** * @OA\Info(title="My First API", version="0.1") */ /** * @OA\Get( * path="/api/resource.json", * @OA\Response(response="200", description="An example resource") * ) */ public function scan() { $openapi = \OpenApi\scan(__DIR__); header('Content-Type: application/x-yaml'); return $openapi->toJson(); } # 註冊路由 Route::get('scan', 'SwaggerController@scan'); # 訪問頁面 http://www.ltf.com/scan # 將路徑寫入到index.html文件中實現掃描功能 url: "http://www.ltf.com/scan" # 訪問API文檔頁面便可獲得最新文檔 http://www.ltf.com/doc
https://github.com/swagger-api/swagger-editor.git
後端
Swagger 2.0版本能夠生成 PHP 後端代碼, OpenAPI 3.0.0 版本暫不支持