如何使用公共swagger-generator docker镜像生成客户端?

时间:2016-09-27 17:00:50

标签: ruby docker swagger swagger-codegen

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

我已经阅读了文档here,这导致我Swagger's public docker image生成客户端和服务器代码。可悲的是,缺少文档,并没有提供实际生成具有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有效,我仍然会收到“无效的swagger定义”。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

确实你是对的,你引用的码头图像与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

然后你可以在http://192.168.99.100

上打开swagger-ui

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

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

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