如何使用 public swagger-generator docker 图像生成客户端?

How do I use the public swagger-generator docker image to generate a client?

我们有一个完全 docker 化的 Web 应用程序,其中包含 API 的有效 Swagger 定义。 API 在它自己的 docker 容器中运行,我们使用 docker-compose 来编排一切。我想根据位于 http://api:8443/apidocs.json.

的 Swagger 定义生成一个 Ruby 客户端

我已经仔细阅读了生成客户端和服务器代码的文档 here, which led me to Swagger's public docker image。遗憾的是,缺少文档并且没有提供使用 docker 图像实际生成客户端的示例。

Dockerfile indicates its container runs a web service, which I can only assume is the dockerized version of 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

运气不好。我一直收到 "invalid swagger definition",即使我已经确认 swagger 定义对 (npm -q install -g swagger-tools >/dev/null) && swagger-tools validate http://api:8443/apidocs 有效。

有什么想法吗?

确实你是对的,你所指的 docker 图像与 http://generator.swagger.io

中使用的图像相同

您遇到的问题是输入参数不正确。

现在要正确,请注意 swagger-generator 有一个网络界面。所以一旦你启动它,就像说明所说的那样,在浏览器中打开它。例如(将 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 select 您要生成的语言,然后单击右侧的有效负载。将 swaggerUrl 字段替换为您的服务器地址,瞧。

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

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