我如何使用公共的大摇大摆的docker图像来生成客户端?

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

我已经通过这里的文档,这导致我Swagger的公共docker图像生成客户端和服务器代码。 遗憾的是文档是缺乏的,并没有提供实际生成一个客户端与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

有任何想法吗?

事实上,你是正确的,你指的docker图像是在http://generator.swagger.io使用的相同的图像

你遇到的问题是input参数不正确。

现在要做对了,请注意,大摇大摆的发电机有一个networking界面。 所以一旦你启动它,就像说明书所说的那样,在浏览器中打开它。 例如(用您的机器的IP地址replaceGENERATOR_HOST):

 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/generateClientselect要生成的语言,然后单击右侧的有效负载。 将swaggerUrl字段replace为服务器的地址,然后瞧。

您可以使用curl中的输出来弄清楚如何从命令行调用。 从那里应该很容易。

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

Interesting Posts