swagger-ui访问本地文件

今天完成对项目中某个子模块的RESTful的设计,使用swaggerapi/swagger-editor工具完成的。完成设计以后,想让团队中的后端和前端开发同事能够很方便的看到设计的成果,并以此作为前后端协作开发依据之一。但是服务器部署swagger-ui工具并访问本地文件时遇到一个很扯的问题:swagger-ui官方指导文档介绍的让swagger-ui读取本地的文件的方式不可行,根本访问不到本地文件。

哎,还是要自力更生呢~~~

1 解决思路

通过查看swagger-ui官方文档,可以了解到swagger-ui是基于nginx来实现部署的。nginx熟悉啊,能够找到nginx对应的静态文件目录,然后把设计导出的文件放进去,是不是就可以放了吗?话不多数,开干~~

主要的思路就是:先用运行一个swagger-ui的容器,然后访问它,查看nginx静态文件的存放目录,然后将文件拷贝进去,刷新页面重试。

  1. 运行swagger-ui容器
$ docker run -idt -p 8081:8080 --name swagger-ui swaggerapi/swagger-ui
  1. 访问容器
$ docker exec -it swagger-ui /bin/sh
  1. 查找nginx静态文件位置
$ find / -name nginx.conf
# /etc/nginx/nginx.conf
$ cat /etc/nginx/nginx.conf
worker_processes      1;

events {
  worker_connections  1024;
}

http {
  include             mime.types;
  default_type        application/octet-stream;

  sendfile on;

  keepalive_timeout   65;

  gzip on;
  gzip_static on;
  gzip_disable "msie6";

  gzip_vary on;
  gzip_types text/plain text/css application/javascript;

  map $request_method $access_control_max_age {
    OPTIONS 1728000; # 20 days
  }
  server_tokens off; # Hide Nginx version

  server {
    listen            8080;
    server_name       localhost;
    index             index.html index.htm;

    location / {
      absolute_redirect off;
      alias            /usr/share/nginx/html/;
      expires 1d;

      location ~* \.(?:json|yml|yaml)$ {
        #SWAGGER_ROOT
        expires -1;

        include cors.conf;
      }

      include cors.conf;
    }
  }
}

可以看到nginx静态文件目录在/usr/share/nginx/html目录下,使用命令exit退出当前容器

  1. 拷贝文件到容器目录中
$ docker cp <target_file_path> swagger-ui:/usr/shar/nginx/html/
  1. 刷新页面,在输入框中输入文件名称就可以访问了。

2 使用docker-compose改造

上面的解决方式相对繁琐一些,一个是需要敲的命令有点多,另外一个,在本机上完成RESTful的设计,然后拷贝到服务器上,最后拷贝到镜像中。这里呢,使用docker-compose对这个过程进行优化,优化的目的,一个是将上述docker容器操作流程自动化,另一个是在容器上挂载服务器的一个目录,只需将设计好的文件放到这个目录中即可。

docker-compose文件内容:

version: "3.4"

services:
  desktop:
    image: swaggerapi/swagger-ui
    container_name: swagger-ui
    ports:
      - "8082:8080"
    volumes:
      - D:\01-Data\02-LearnNote:/usr/share/nginx/html/swagger

编写好了以后,执行docker-compose up -d即可自动创建容器,并完成挂载。

在这个文件中,我是在html目录下创建一个swagger文件夹,然后将宿主机的文件夹挂载到这个位置,所以,在访问设计文件时,需要在前面加上swagger/注意,不能直接挂载到html文件夹,否则会导致容器启动不成功,因为这样会把html文件夹中的文件替换成挂载文件夹的内容。

贴一张最终的效果图~~~

image-20210304231228092

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要关闭 Swagger UI,您需要停止运行您的应用程序。这将使 Swagger UI 不再可用。 如果您使用的是本地开发服务器,可以使用“CTRL + C”快捷键来停止运行服务器。如果您使用的是远程服务器,则需要使用服务器控制面板或命令行工具来停止服务器。 此外,还可以通过在 Swagger UI 的 URL 中添加“?url=”参数来关闭 Swagger UI。例如,如果您的 Swagger UI 的 URL 是“http://localhost:8080/swagger-ui.html”,则可以使用“http://localhost:8080/swagger-ui.html?url=”来关闭 Swagger UI。 希望这对您有帮助! ### 回答2: 要关闭Swagger UI,可以通过以下步骤实现: 1. 打开项目的配置文件,通常是一个以`.yml`或`.properties`为后缀的文件。 2. 在配置文件中查找Swagger相关的配置项,如`springfox.documentation.swagger-ui.enabled`,该项一般用于控制是否启用Swagger UI。 3. 将Swagger UI的启用状态改为`false`,即禁用Swagger UI。 4. 保存配置文件,并重新启动项目。 5. 确认Swagger UI已被成功关闭,可以通过访问Swagger UI的URL来验证。若无法访问或出现404错误,则表明Swagger UI已关闭。 需要注意的是,具体的配置项名称可能会因项目而异,可以查阅项目的相关文档或咨询开发团队获取准确的配置项名称。 关闭Swagger UI后,项目将不再提供Swagger API文档以及交互式界面。这可能在某些情况下有利于项目的安全性,但也会导致开发团队和其他相关人员无法通过Swagger UI来查看接口文档和进行API调试。 ### 回答3: 要关闭Swagger-UI.html,可以按照以下步骤进行操作: 1. 找到Swagger-UI.html文件所在的目录。通常情况下,Swagger-UI.html文件会在项目的src/main/resources/static或src/main/webapp等静态资源目录中。 2. 打开Swagger-UI.html文件,可以使用文本编辑器或集成开发环境(IDE)来进行编辑。 3. 在Swagger-UI.html文件中查找或搜索<script>标签或相关的JavaScript代码。 4. 找到与Swagger-UI相关的JavaScript代码段,通常包含Swagger-UI构造函数的实例化。 5. 注释或删除与Swagger-UI构造函数实例化相关的代码。例如,可以注释掉或删除以下代码段: ```javascript const ui = SwaggerUIBundle({ url: "http://localhost:8080/v2/api-docs", // Swagger API文档的URL dom_id: '#swagger-ui', // Swagger-UI容器的DOM元素的ID ... }); ``` 6. 保存并关闭Swagger-UI.html文件。 通过以上步骤,Swagger-UI.html将会被关闭,用户将无法访问和使用Swagger-UI界面。请注意,这只是通过停用Swagger-UI.html来关闭Swagger-UI的一种方法,如果想要完全禁用Swagger-UI,可能需要在项目的配置文件中进行相关设置或修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值