我们有一个完全停靠的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定义”。
有什么想法吗?
答案 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
这里的重要部分是您可以使用UI查看调用语法。如果您要重新生成客户端,请转到http://192.168.99.100/#!/clients/generateClient
选择要生成的语言,然后点击右侧的有效负载。将swaggerUrl
字段替换为服务器的地址,然后填写。
您可以使用curl中的输出来确定如何从命令行调用。从那里开始应该很容易。
请记住,仅仅因为第三方工具说swagger定义有效并不意味着它实际上是。我不认为这是你的问题,但第三方工具的里程可能会有所不同......