建立專案
建立專案。
1 2
| laravel new laravel-swagger-ui cd laravel-swagger-ui
|
安裝 Swagger UI
手動從 Swagger UI 的 GitHub 下載原始碼。也可以使用以下指令下載,並解壓縮。
1 2 3
| wget $(curl -s https://api.github.com/repos/swagger-api/swagger-ui/releases/latest | jq -r ".zipball_url") -O swagger-ui-latest.zip unzip -d swagger-ui-latest swagger-ui-latest.zip rm swagger-ui-latest.zip
|
將其中的 dist
資料夾,移動到專案的 public/docs
資料夾。
1 2
| cp -r $(find swagger-ui-latest -type d -name "dist" -print -quit) public/docs rm -rf swagger-ui-latest
|
修改 index.html
檔,修正靜態檔案引入的相對路徑。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Swagger UI</title> <link rel="stylesheet" type="text/css" href="./swagger-ui.css" /> <link rel="stylesheet" type="text/css" href="./index.css" /> <link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" /> <link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" /> </head>
<body> <div id="swagger-ui"></div> <script src="./swagger-ui-bundle.js" charset="UTF-8"> </script> <script src="./swagger-ui-standalone-preset.js" charset="UTF-8"> </script> <script src="./swagger-initializer.js" charset="UTF-8"> </script> </body> </html>
|
修改 swagger-initializer.js
檔,修正 url
欄位。
1 2 3 4 5 6
| window.onload = function() { window.ui = SwaggerUIBundle({ url: "./spec.json", }); };
|
安裝 Redocly CLI
安裝依賴套件。
1
| npm install @redocly/cli nodemon -D
|
修改 package.json
檔,建立一個腳本。
1 2 3 4 5 6
| { "scripts": { "docs:build": "redocly bundle docs/openapi.yaml --output public/docs/spec.json --ext json", "docs:watch": "nodemon --watch docs/openapi.yaml -x \"npm run docs:build\"" } }
|
建立文件
在專案根目錄建立 docs/openapi.yaml
檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| openapi: 3.0.3
info: title: JSONPlaceholder description: Free fake API for testing and prototyping. version: 0.1.0
paths: "/posts": get: tags: ["posts"] summary: Returns all posts responses: "200": description: All went well content: application/json: schema: $ref: "#/components/schemas/post" components: schemas: post: type: object properties: id: type: number description: ID of the post title: type: string description: Title of the post body: type: string description: Body of the post
|
編譯文件。
啟動專案。
瀏覽文件
前往 http://localhost:8000/docs 瀏覽。
程式碼
參考文件