我们有一个完全 Docker 化的 Web 应用程序,其中包含有效的 API Swagger 定义。该 API 在其自己的 docker 容器中运行,我们使用 docker-compose 来编排一切。我想根据位于以下位置的 Swagger 定义生成一个 Ruby 客户端http://api:8443/apidocs.json
.
我已经仔细阅读了文档here https://github.com/swagger-api/swagger-codegen,这让我Swagger 的公共 docker 镜像 https://hub.docker.com/r/swaggerapi/swagger-generator/用于生成客户端和服务器代码。遗憾的是,该文档缺乏,并且没有提供使用 docker 映像实际生成客户端的示例。
The Dockerfile https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-generator/Dockerfile表示它的容器运行一个 Web 服务,我只能假设它是 dockerized 版本http://generator.swagger.io 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 定义是有效的,我仍然收到“无效的 swagger 定义”(npm -q install -g swagger-tools >/dev/null) && swagger-tools validate http://api:8443/apidocs
.
有任何想法吗?
确实,您是对的,您所指的 docker 映像与以下位置使用的映像相同http://generator.swagger.io 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 中的输出来了解如何从命令行调用。从那里应该很容易。
请记住,仅仅因为第三方工具说 swagger 定义有效并不意味着它实际上是有效的。不过,我认为这不是你的问题,但第三方工具的里程可能会有所不同......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)