9

API の有効な Swagger 定義を使用して、完全に Docker 化された Web アプリがあります。API は独自の docker コンテナーで実行され、docker-compose を使用してすべてを調整しています。にある Swagger 定義に基づいて Ruby クライアントを生成したいと考えていますhttp://api:8443/apidocs.json

ここのドキュメントをざっと読んだ結果、クライアント コードとサーバー コードを生成するための Swagger の公開 Docker イメージにたどり着きました。悲しいことに、ドキュメントが不足しており、docker イメージを使用して実際にクライアントを生成するための例が提供されていません。

Dockerfileは、コンテナーが Web サービスを実行していることを示してます。そのため、次のコマンドでクライアントを生成できると期待しています。

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

ここでは運がありません。でswagger定義が有効であることを確認したにもかかわらず、「無効なswagger定義」が表示され続けます(npm -q install -g swagger-tools >/dev/null) && swagger-tools validate http://api:8443/apidocs

何か案は?

4

1 に答える 1

8

確かにあなたは正しいです。あなたが参照しているdockerイメージは、 http: //generator.swagger.ioで使用されているイメージと同じです

あなたが抱えている問題は、入力パラメータが正しくないことです。

正しく理解するために、swagger-generator には Web インターフェースがあることに注意してください。起動したら、指示に従ってブラウザで開きます。例 (GENERATOR_HOST をマシンの IP アドレスに置き換えます):

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

その後、swagger-ui を開くことができますhttp://192.168.99.100

ここで重要なのは、UI を使用して呼び出し構文を確認できることです。クライアントを生成している場合は、http://192.168.99.100/#!/clients/generateClient生成する言語を選択し、右側のペイロードをクリックします。swaggerUrlフィールドをサーバーのアドレスに置き換えてください。

curl の出力を使用して、コマンド ラインから呼び出す方法を理解できます。そこからは簡単なはずです。

サードパーティのツールが Swagger の定義が有効であると言っているからといって、実際に有効であるとは限らないことに注意してください。ただし、それはあなたの問題ではないと思いますが、サードパーティのツールの走行距離は異なる場合があります...

于 2016-09-28T03:35:52.183 に答える