Swagger与Ubuntu如何完美结合
导读:在 Ubuntu 上,Swagger(OpenAPI)可与本地开发、容器化部署、反向代理及后端框架无缝集成,覆盖从设计、文档到联调测试的全流程。 快速落地方案 原生安装 Node.js 与 npm,快速起一个离线的 Swagger Edi...
在 Ubuntu 上,Swagger(OpenAPI)可与本地开发、容器化部署、反向代理及后端框架无缝集成,覆盖从设计、文档到联调测试的全流程。
快速落地方案
- 原生安装 Node.js 与 npm,快速起一个离线的 Swagger Editor 与 Swagger 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 默认路径)
- 依赖(Maven):
生产级部署与访问控制
- 使用 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
