首页 文章

如何使用公共swagger-generator docker镜像生成客户端?

提问于
浏览
8

我们有一个完全停靠的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 有效,我仍然会收到"invalid swagger definition" .

有任何想法吗?

1 回答

  • 5

    确实你是对的,你所指的码头图像与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 打开swagger-ui

    这里的重要部分是您可以使用UI来查看调用语法 . 如果您要生成客户端,请转到 http://192.168.99.100/#!/clients/generateClient 选择要生成的语言,然后单击右侧的有效负载 . 将 swaggerUrl 字段替换为服务器的地址并瞧 .

    您可以使用curl中的输出来确定如何从命令行调用 . 从那里应该很容易 .

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

相关问题