Debian系统与Swagger集成案例分析
一 典型场景与方案概览
| 技术栈 | 关键依赖 | 文档访问路径 | 要点 |
|---|---|---|---|
| Python Flask + flasgger | git、curl、nginx、python3-pip、flask、flasgger | /swagger/(UI)、/swagger.json(Spec) | 配置静态资源与反向代理,便于与现有站点共存 |
| Java Spring Boot + Springfox | openjdk-11-jdk、maven | /swagger-ui.html(Springfox 2.x)或**/swagger-ui/**(Springfox 3.x) | 通过配置类启用扫描与分组,适合微服务 |
| Node.js Express + swagger-ui-express | nodejs、npm、swagger-jsdoc、swagger-ui-express | /api-docs | 支持从JSDoc注释或YAML/JSON生成UI |
| OpenAPI Generator 静态托管 | openapi-generator | 生成的index.html | 适合离线文档、CI/CD产物托管与审计归档 |
二 案例一 Python Flask + flasgger
sudo apt update && sudo apt install -y git curl nginx python3-pippip3 install flask flasggerfrom flask import Flask, jsonify from flasgger import Swagger
app = Flask(name)
swagger_config = { ‘headers’: [], ‘specs’: [{ ‘endpoint’: ‘apispec_1’, ‘route’: ‘/swagger.json’, ‘rule_filter’: lambda rule: True, ‘model_filter’: lambda tag: True, }], ‘static_url_path’: ‘/flask-swagger-ui’, ‘swagger_ui’: True, ‘specs_route’: ‘/swagger/’ }
swagger = Swagger(app, config=swagger_config)
@app.route(‘/’) def index(): return jsonify({“message”: “Hello, World!”})
@app.route(‘/api/v1/hello’) def hello(): “”“This is a sample endpoint — responses: 200: description: A successful response “”” return jsonify({“message”: “Hello from the API!”})
if name == ‘main’: app.run(debug=True)
server { listen 80; server_name your_server_ip_or_domain;
location /swagger-ui { proxy_pass http://127.0.0.1:5000; 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 ln -s /etc/nginx/sites-available/swagger-ui /etc/nginx/sites-enabled/ && sudo nginx -t && sudo systemctl restart nginxpython3 app.py三 案例二 Java Spring Boot + Springfox
sudo apt update && sudo apt install -y openjdk-11-jdk mavenmvn clean packagejava -jar target/demo-0.0.1-SNAPSHOT.jar四 案例三 Node.js Express + swagger-ui-express
sudo apt update && sudo apt install -y nodejs npmsudo npm install -g swagger-jsdoc swagger-ui-expressconst express = require(‘express’); const swaggerUi = require(‘swagger-ui-express’); const swaggerJsDoc = require(‘swagger-jsdoc’);
const swaggerOptions = { swaggerDefinition: { openapi: ‘3.0.0’, info: { title: ‘Sample API’, version: ‘1.0.0’, }, servers: [{ url: ‘http://localhost:3000’ }] }, apis: [‘./routes/*.js’] // 或指定 swagger.yaml/json };
const swaggerDocs = swaggerJsDoc(swaggerOptions); const app = express();
app.use(‘/api-docs’, swaggerUi.serve, swaggerUi.setup(swaggerDocs)); app.get(‘/api/hello’, (req, res) => res.json({ message: ‘Hello, Express!’ }));
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(Server running on port ${PORT}));
node app.js五 部署与运维要点
openapi-generator generate -i your-openapi-spec.yaml -g html),由Nginx/Apache托管,适合审计归档、内网离线查看与CI产物发布。