在CentOS上测试Swagger前,需先安装Node.js、npm(用于管理前端组件)和Docker(可选,用于快速部署Swagger UI/Editor)。
安装Node.js和npm:
执行以下命令安装Node.js(以v14.17.0为例):
wget https://nodejs.org/dist/v14.17.0/node-v14.17.0-linux-x64.tar.xz
tar -xf node-v14.17.0-linux-x64.tar.xz
sudo mv node-v14.17.0-linux-x64 /usr/local/nodejs
export PATH=$PATH:/usr/local/nodejs/bin # 临时生效,建议写入~/.bashrc永久生效
验证安装:node -v(显示版本号)、npm -v(显示版本号)。
安装Docker(可选):
若使用Docker快速部署,执行以下命令:
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
Swagger UI是交互式测试工具,以下提供本地部署和Docker部署两种方式:
cd /opt/swagger
wget https://github.com/swagger-api/swagger-ui/archive/v3.34.0.tar.gz
tar -xf v3.34.0.tar.gz
cd swagger-ui-3.34.0
npm init -y
npm install express --save
mkdir public
cp -r dist/* public/ # 将Swagger UI静态文件复制到public目录
index.js,配置静态资源路径和默认文档:var express = require('express');
var app = express();
app.use('/static', express.static('public')); // 静态资源路径
app.get('/', (req, res) => {
res.sendFile(__dirname + '/public/index.html'); // 默认加载Swagger UI
});
app.listen(3000, () => console.log('Swagger UI running on http://localhost:3000'));
node index.js
访问http://<CentOS_IP>:3000,即可看到Swagger UI界面。若不想安装依赖,可使用Docker快速启动:
docker pull swaggerapi/swagger-ui:v4.15.5
docker run -d -p 8080:8080 -e SWAGGER_FILE=/app/swagger.json -v /opt/swagger/docs:/app swaggerapi/swagger-ui:v4.15.5
-e SWAGGER_FILE:指定Swagger文档路径(需提前将swagger.json放在/opt/swagger/docs目录);http://<CentOS_IP>:8080即可查看文档。若需要编写或修改Swagger文档(YAML/JSON格式),可部署Swagger Editor:
cd /opt/swagger
wget https://github.com/swagger-api/swagger-editor/archive/v3.14.0.tar.gz
tar -xf v3.14.0.tar.gz
cd swagger-editor-3.14.0
npm install -g http-server # 安装静态服务器
http-server -p 8081 # 启动服务,默认端口8081
访问http://<CentOS_IP>:8081,即可在线编写API文档。
swagger.json或swagger.yaml)上传至Swagger UI的public目录,或修改index.html中的SWAGGER_URL指向文档路径(如http://<CentOS_IP>:3000/static/your-swagger.json);若不想使用浏览器,可直接用curl命令发送请求,验证接口功能:
curl "http://<server_ip>:<port>/api/endpoint?param1=value1¶m2=value2"
curl -X POST "http://<server_ip>:<port>/api/endpoint" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "param1=value1¶m2=value2"
curl -X POST "http://<server_ip>:<port>/api/endpoint" \
-H "Content-Type: application/json" \
-d '{"key1":"value1","key2":"value2"}'
curl -X POST "http://<server_ip>:<port>/api/upload" \
-F "file=@/path/to/local/file" \
-F "param1=value1"
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
swagger.json/swagger.yaml)与后端API接口一致,否则测试结果可能不准确。