首页主机资讯Swagger与Ubuntu如何完美结合

Swagger与Ubuntu如何完美结合

时间2025-12-04 19:26:04发布访客分类主机资讯浏览1173
导读:在 Ubuntu 上,Swagger(OpenAPI)可与本地开发、容器化部署、反向代理及后端框架无缝集成,覆盖从设计、文档到联调测试的全流程。 快速落地方案 原生安装 Node.js 与 npm,快速起一个离线的 Swagger Edi...

在 Ubuntu 上,Swagger(OpenAPI)可与本地开发、容器化部署、反向代理及后端框架无缝集成,覆盖从设计、文档到联调测试的全流程。

快速落地方案

  • 原生安装 Node.js 与 npm,快速起一个离线的 Swagger EditorSwagger UI
    • 安装依赖:sudo apt update & & sudo apt install -y nodejs npm
    • 启动 Editor(示例版本 v3.16.1):
      • wget https://github.com/swagger-api/swagger-editor/archive/refs/tags/v3.16.1.tar.gz
      • tar -xvf v3.16.1.tar.gz & & cd swagger-editor-3.16.1
      • npm install & & npm install -g http-server
      • http-server -p 8080(浏览器访问:http://localhost:8080)
    • 启动 UI(示例版本 v3.48.0):
      • wget https://github.com/swagger-api/swagger-ui/archive/refs/tags/v3.48.0.tar.gz
      • tar -xvf v3.48.0.tar.gz & & cd swagger-ui-3.48.0
      • npm install & & npm install -g http-server
      • http-server -p 8081(浏览器访问:http://localhost:8081)
  • 使用 Docker 一步到位(适合演示与一致性部署):
    • 安装 Docker:sudo apt update & & sudo apt install -y docker.io
    • 运行 Swagger UI(内置示例规范):
      • docker pull swaggerapi/swagger-ui-express
      • docker run -p 8080:8080 swaggerapi/swagger-ui-express
    • 挂载本地规范文件(当前目录含 swagger.json):
      • docker run -p 8080:8080 -e SWAGGER_JSON=/app/swagger.json -v $(pwd):/app swaggerapi/swagger-ui-express
    • 浏览器访问:http://localhost:8080

与后端框架集成

  • Node.js + Express:使用 swagger-ui-express 托管本地或远程的 OpenAPI 文档
    • 安装:sudo npm install -g swagger-jsdoc swagger-ui-express
    • 代码示例(读取本地 swagger.yaml):
      • const express = require(‘express’); const swaggerUi = require(‘swagger-ui-express’); const YAML = require(‘yamljs’);
      • const app = express(); const swaggerDocument = YAML.load(‘./swagger.yaml’);
      • app.use(‘/api-docs’, swaggerUi.serve, swaggerUi.setup(swaggerDocument));
      • app.listen(3000, () => console.log(‘Server on :3000, /api-docs for docs’));
    • 访问:http://localhost:3000/api-docs
  • Java Spring Boot:使用 Springfox Swagger2(Spring Boot 2.x 常用)
    • 依赖(Maven):
      • io.springfox:springfox-swagger2:2.9.2
      • io.springfox:springfox-swagger-ui:2.9.2
    • 配置类启用并扫描包:
      • @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2).select() .apis(RequestHandlerSelectors.basePackage(“com.example.demo.controller”)) .paths(PathSelectors.any()).build(); } }
    • 访问:http://localhost:8080/swagger-ui.html(Springfox 2.x 默认路径)

生产级部署与访问控制

  • 使用 Nginx 反向代理与统一域名访问:
    • 安装:sudo apt install -y nginx
    • 配置 /etc/nginx/sites-available/default(示例):
      • location /swagger-editor { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
      • location /swagger-ui { proxy_pass http://127.0.0.1:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
    • 生效:sudo systemctl restart nginx
    • 访问:http://your-domain/swagger-editor 与 http://your-domain/swagger-ui
  • 安全建议:仅在内网或启用鉴权(如 Basic Auth、JWT)后开放;通过 Nginx 限制 IP、开启 HTTPS(Let’s Encrypt)

高效工作流与常见问题

  • 工作流建议
    • Swagger Editor 在本地编写/导入 swagger.yaml/swagger.json,实时校验与预览
    • 将规范文件纳入 Git,配合 CI 在合并请求时做规范校验与预览站点生成
    • 后端集成时选择:Node 项目用 swagger-ui-express,Spring Boot 2.x 用 Springfox Swagger2,Spring Boot 3.x 建议迁移到 SpringDoc OpenAPI(与 Springfox 不兼容)
  • 常见问题排查
    • 端口被占用:lsof -i:8080 / 8081;更换端口或释放占用进程
    • CORS 问题:在后端或 Nginx 增加跨域头(Access-Control-Allow-Origin 等)
    • 容器无法读取本地文件:确认 -v 挂载路径正确且容器内路径与 SWAGGER_JSON 一致
    • 访问路径 404:Springfox 2.x 默认是 /swagger-ui.html;若使用 SpringDoc,常见为 /swagger-ui//swagger-ui.html(版本不同路径有差异)

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Swagger与Ubuntu如何完美结合
本文地址: https://pptw.com/jishu/763838.html
Ubuntu上Swagger文档怎么查看 Debian挂载分区问题解决

游客 回复需填写必要信息