我们有一个完全停靠的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的停靠版本。因此,我希望能够使用以下命令生成一个客户端:
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定义是有效的。
有什么想法吗?
发布于 2016-09-28 11:35:52
确实,您是对的,您所指的docker图像与http://generator.swagger.io中使用的图像相同
您遇到的问题是输入参数不正确。
现在为了得到正确的结果,请注意swagger生成器有一个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定义是有效的并不意味着它实际上是有效的。我不认为这是你的问题,但第三方工具里程可能会有所不同……
https://stackoverflow.com/questions/39730438
复制相似问题