在 Ubuntu 上进行 Swagger 测试
一 准备环境
sudo apt update && sudo apt install -y nodejs npmsudo apt install -y docker.io二 本地启动 Swagger Editor 与 Swagger UI
sudo npm install -g http-serverwget 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
http-server -p 8080
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
http-server -p 8081
docker pull swaggerapi/swagger-editor:v4.6.0
docker run -d -p 38080:8080 swaggerapi/swagger-editor:v4.6.0
docker pull swaggerapi/swagger-ui:v4.15.5
docker run -d -p 38081:8080 swaggerapi/swagger-ui:v4.15.5
三 将 Swagger UI 集成到你的服务
mkdir swagger-demo && cd swagger-demo
npm init -y
npm install express swagger-ui-express yamljs
openapi: 3.0.0
info:
title: Sample API
version: 1.0.0
paths:
/users:
get:
summary: List users
responses:
'200':
description: OK
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 on ${PORT}, /api-docs`));
node index.js,访问 http://localhost:3000/api-docsswagger: '2.0' 并确保字段兼容。四 自动化测试与持续集成
wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.44/swagger-codegen-cli-3.0.44.jar -O swagger-codegen-cli.jar
java -jar swagger-codegen-cli.jar generate -i http://localhost:3000/v2/api-docs -l python -o ./generated-client
pip install pytest requests
# test_api.py
import requests
def test_get_users():
r = requests.get('http://localhost:3000/users')
assert r.status_code == 200
pytest test_api.py
npm install -g newman
newman run your-swagger-collection.json -r cli,json,html
npm install -g dredd
dredd swagger.yaml http://localhost:3000
五 常见问题与排障
sudo lsof -i:8080 → kill <PID>