在 Ubuntu 上部署 Swagger 的三种常用方式
方式一 Node.js + Express 集成 Swagger UI
swagger: '2.0'
info:
title: Sample API
version: '1.0.0'
paths:
/users:
get:
summary: List all users
responses:
'200':
description: An array of users
schema:
type: array
items:
$ref: '#/definitions/User'
definitions:
User:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
required:
- id
- name
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));
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}/api-docs`);
});
方式二 静态站点托管 Swagger UI(Nginx/Apache)
git clone https://github.com/swagger-api/swagger-ui.git
cd swagger-ui && npm install && npm run build
sudo mkdir -p /var/www/html/swagger-ui
sudo cp -r dist/* /var/www/html/swagger-ui
server {
listen 80;
server_name your-domain-or-ip;
location /swagger-ui/ {
alias /var/www/html/swagger-ui/;
index index.html;
}
}
方式三 Docker 快速部署 Editor 与 UI
docker run -d --name swagger-editor -p 8080:8080 swaggerapi/swagger-editor:latest
docker run -d --name swagger-ui -p 8081:8080 \
-v $(pwd)/swagger.yaml:/usr/share/nginx/html/swagger.yaml \
swaggerapi/swagger-ui:latest
常见问题与优化建议