首页 文章

如何使用本地代码更改和我自己的swagger.json运行swagger-ui?

提问于
浏览
3

https://github.com/swagger-api/swagger-ui上的自述文件指定可以使用您自己的文件运行Swagger-UI

docker run -p 80:8080 -e SWAGGER_JSON=/foo/swagger.json -v /bar:/foo swaggerapi/swagger-ui

如果我把它翻译成我的作品

docker build . -t swagger-ui-local && \
  docker run -p 80:8080 -e SWAGGER_JSON=/foo/my-file.json -v $PWD:/foo swagger-ui-local

然而,这忽略了我当地的变化 .

我可以运行我的本地更改

npm run dev

但我无法弄清楚如何使这个开发服务器运行除Petstore示例之外的任何其他东西 .

谁能帮我把两者结合起来,所以我可以用本地代码更改和我自己的swagger.json运行swagger-ui?

4 回答

  • 3

    确保您正在安装正确的本地目录 .

    在本地,我在 $PWD/src/app/swagger/swagger.yaml 中有我的招摇配置 . 运行以下工作正常:

    docker run -p 80:8080 -e SWAGGER_JSON=/tmp/swagger.yaml -v `pwd`/src/app/swagger:/tmp swaggerapi/swagger-ui
    

    只需刷新Swagger-UI页面或单击 Headers 中的“Explore”按钮,即可触发从YAML文件刷新数据 .

  • 2

    我想出了 npm run dev

    my-file.json 放在 dev-helpers 文件夹中 . 然后它可以在 http://localhost:3200/ 的搜索栏中找到 .

    要在打开服务器时自动加载,请通过更改来更改 dev-helpers/index.html

    url: "http://petstore.swagger.io/v2/swagger.json"
    

    url: "my-file.json"
    
  • 1

    如果您正在使用Play Framework运行maven项目,以下步骤解决了我的问题:

    1.)更改conf / routes文件 . 添加以下行:GET /swagger.json controllers.Assets.at(path =“/ public / swagger-ui”,file =“swagger.json”)

    2.)将swagger.json文件添加到Swagger-UI文件夹中

    因此,当您在端口示例7777中运行mvn项目时,使用mvn play2:run启动播放服务器,然后localhost:7777 / docs将自动拉出本地添加的Json文件 .

  • 1

    我找到了这个主题,因为我想看到我本地swagger文件的可视化表示,但似乎没有得到swagger-ui(在docker中运行)来显示除petstore之外的任何东西 .

    最后,我的问题是了解-e SWAGGER_JSON和-v标志,所以我想在这里解释它们 .

    -v <path1>:<path2>
    

    此选项显示“在路径<path2>上的swagger-ui docker容器中从我的本地文件系统安装路径<path1>”

    -e SWAGGER_JSON=<filepath>
    

    此选项显示“默认情况下,使用docker容器的文件系统在<filepath>显示文件的swagger” . 这里的重要部分是,此文件路径应考虑如何设置上面的<path2>

    总而言之,我最终得到以下结论:

    docker run -p 8085:8080 -e SWAGGER_JSON=/foo/swagger.json -v `pwd`:/foo swaggerapi/swagger-ui
    

    这用英语说:“在端口8085上运行我的swagger-ui实例 . 在docker容器中将我当前的工作目录挂载为'/ foo' . 默认情况下,在'/foo/swagger.json'显示swagger文件 . ”

    需要注意的重要一点是,我在当前的工作目录中有一个名为swagger.json的文件 . 此命令将当前工作目录挂载到docker容器中作为/ foo . 然后,swagger UI可以将我的swagger.json作为/foo/swagger.json .

相关问题