by Devin Yang

建立於: 6年前 ( 更新: 6年前 )

前言

最好的API是使用Swagger工具建立的,
本文介紹如何用docker來執行swagger-ui及editor,讓我們建立出可測試的API文件。
在docker的環境,我們可以很輕鬆的啟動swagger編輯器及使用者介面。

單純Docker

啟動swagger編輯器

docker run --rm p 8082:8080 swaggerapi/swagger-editor

在上方的例字中 ,我補上了 --rm,代表當停止container時,container就會被移除。

可以設定預設是否展開

API_URL載入預設文件。

DOC_EXPANSION設定為預設不展開。

docker run --rm -d -p 8083:8080 -e API_URL=https://raw.githubusercontent.com/DevinY/openapi/master/openapi-jwt.yaml -e DOC_EXPANSION='none' swaggerapi/swagger-ui

在這裡的 -e代表了傳入container的環境變數,可以傳入環境變數,例如預設的檔案。

另外,本文中預設的編輯器及UI分別使用本機的8082及8083埠,如果port被佔用,請依您自己喜好調整。

我們可以輕易的在swagger-editor中經由URL或是檔案上傳,匯入json或yaml設定檔。
swagger-ui
我這裡提供了一個JWT的Sample,應該可以快速上手,設定上非常直覺。
https://raw.githubusercontent.com/DevinY/openapi/master/openapi-jwt.yaml

一些參考文件:
https://swagger.io/docs/specification/data-models/data-types/
https://swagger.io/docs/specification/describing-responses/
https://swagger.io/docs/specification/describing-request-body/
https://swagger.io/docs/specification/authentication/bearer-authentication/
 

D-Laravel環境

如果您使用D-Laravel,也可經由D-Laravel的.env載入

或是修改自己的docker-compose.yml檔,依service上的swagger範例,將設定拷到自己的docker-compose.yml中。

D-Laravel於v1.6.18版,已加入swagger-editor.yml及swagger-ui.yml到service中囉。

#===當您使用D-Laravel的.env功能時,請採用D-Laravel所提供的指令控制container!===
#MYSQL_ROOT_PASSWORD=secret
LARAVEL_INSTALLER='container'
DOCKER_SERVICES='docker-compose.yml service/redis.yml service/swagger-editor.yml service/swagger-ui.yml'

Tags: docker api

Devin Yang

文章內容無法一一說明,如果您有什麼不了解處,歡迎提問哦:)

No Comment

Post your comment

需要登入才可留言!

類似的文章


docker,phpenv

用光了Docker IPv4 address pool問題解法

可能在舊版的docker環境,使用Docker compose啟動容器時,會碰過下方的錯誤:

 Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network這其實這是default-address-pools用光的症狀,有些環境,docker-compose預設會使用Class B的私有網路。172段的私有IP是有範圍的,從172.16.0.0到172.31.255.255。也就是說,當我們起動一個docker-compose的Project,就會吃掉一個Class B的私有段,非常豪邁,

fastapi,phpenv,docker

我如何用phpenv建立fastapi執行環境

雖然phpenv主要用於運行PHP Laravel的環境,但不代表他不能跑其他語言或其他容器。本文介紹,我如何讓phpenv跑python的fastapi環境,當然這只是一個概念,目前為止,我已經讓PHP api跑HAProxy了,並且自動申請及更新免費憑證,現在就讓他來跑Python的fastapi吧。phpenv沒有什麼限制,限制的是您的想像力😆

d-laravel,docker

D-Laravel v1.2.1版變更說明(建議更新,必免踩雷)

D-Laravel v1.2.1版修正說明 use GuzzleHttp\Client; 進行post時.出現存取被拒的問題。 如果您是由舊版升級,您可能需調整etc/default-ssl.conf的設定檔 (如果有該檔) 請調整php:9000變更為web:9000,你可以透過執行一次./console secure調整。 docker-compose設定檔部份,PHP-FPM container變更為network_mode: "service:web"...