2016-09-27 13 views
8

我們有一個完全dockerized的web應用程序,其API有效的Swagger定義。 API運行在它自己的docker容器中,我們使用docker-compose編排一切。我想根據位於http://api:8443/apidocs.json的Swagger定義生成一個Ruby客戶端。如何使用公開招搖的生成器碼頭圖像來生成客戶端?

我已經翻閱了文檔here,這導致我產生了客戶端和服務器代碼的Swagger's public docker image。令人遺憾的是文檔缺乏,並沒有提供實際生成具有泊塢窗圖像的客戶端的示例。

Dockerfile表示它的容器運行一個Web服務,我只能假設它是dockerized版本的http://generator.swagger.io。因此,我希望能夠生成客戶端使用下面的命令:

curl -X POST -H "content-type:application/json" -d \ '{"swaggerUrl":"http://api:8443/apidocs"}' \ http://swagger-generator:8080/api/gen/clients/ruby

沒有運氣在這裏。即使我已經確認swagger的定義與(npm -q install -g swagger-tools >/dev/null) && swagger-tools validate http://api:8443/apidocs一致,我仍然收到「無效的swagger定義」。

任何想法?

回答

4

你確實是正確的,你指的是泊塢窗圖像在http://generator.swagger.io

您遇到的問題,使用相同的圖像被輸入參數不正確。

現在要做對了,請注意,swagger-generator有一個web界面。所以一旦你啓動它,就像說明書所說的那樣,在瀏覽器中打開它。例如(更換機器的IP地址GENERATOR_HOST):

docker run -d -e GENERATOR_HOST=http://192.168.99.100 -p 80:8080 swaggerapi/swagger-generator 

那麼你就可以打開http://192.168.99.100

這裏的重要組成部分,招搖的用戶界面是你可以使用界面查看呼叫語法。如果您要生成客戶端,請轉至http://192.168.99.100/#!/clients/generateClient選擇要生成的語言,然後單擊右側的有效負載。用您服務器的地址替換swaggerUrl字段,然後瞧。

您可以使用curl中的輸出來弄清楚如何從命令行調用。從那裏應該很容易。

請記住,僅僅因爲第三方工具說swagger定義是有效的並不意味着它實際上是。不過,我認爲這不是您的問題,但第三方工具里程可能會有所不同...

+1

感謝您澄清並提供有用的信息!在挖掘了swagger-generator容器的日誌後,我看到提出的錯誤是「連接被拒絕」。然而,根據curl請求輸出的錯誤是「無效的swagger定義」。沒那麼有用的輸出,那。 :(我糾正了swaggerUrl選項後,「http:// api/apidocs.json」 – mycargus