9

我们有一个完全 dockerized 的 Web 应用程序,其中包含 API 的有效 Swagger 定义。API 在其自己的 docker 容器中运行,我们使用 docker-compose 来编排所有内容。我想生成一个基于 Swagger 定义的 Ruby 客户端http://api:8443/apidocs.json

我已经翻阅了这里的文档,这使我找到了Swagger用于生成客户端和服务器代码的公共 docker 映像。遗憾的是,缺少文档并且没有提供实际使用 docker 映像生成客户端的示例。

Dockerfile表明它的容器运行一个 Web 服务,我只能假设它是http://generator.swagger.io的 dockerized 版本。因此,我希望能够使用以下命令生成客户端:

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.

有任何想法吗?

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-uihttp://192.168.99.100

这里的重要部分是您可以使用 UI 查看调用语法。如果您正在生成客户端,请转到http://192.168.99.100/#!/clients/generateClient选择要生成的语言并单击右侧的有效负载。用您的服务器地址替换该swaggerUrl字段,瞧。

您可以使用 curl 中的输出来确定如何从命令行调用。从那里应该很容易。

请记住,仅仅因为第 3 方工具说 swagger 定义有效并不意味着它实际上是有效的。不过,我认为这不是您的问题,但是 3rd 方工具的里程可能会有所不同...

于 2016-09-28T03:35:52.183 回答