温馨提示×

如何在CentOS上测试Swagger

小樊
42
2025-11-06 00:06:14
栏目: 智能运维

一、准备工作:安装必要依赖

在CentOS上测试Swagger前,需先安装Node.js、npm(用于管理前端组件)和Docker(可选,用于快速部署Swagger UI/Editor)。

  1. 安装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(显示版本号)。

  2. 安装Docker(可选)
    若使用Docker快速部署,执行以下命令:

    sudo yum install -y docker
    sudo systemctl start docker
    sudo systemctl enable docker
    

二、部署Swagger UI(核心测试界面)

Swagger UI是交互式测试工具,以下提供本地部署Docker部署两种方式:

1. 本地部署Swagger UI

  • 下载并解压Swagger UI
    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
    
  • 配置Express静态服务
    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界面。

2. Docker部署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 Editor(可选,用于编写文档)

若需要编写或修改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 API

1. 通过Swagger UI测试(推荐)

  • 导入文档
    将Swagger文档(swagger.jsonswagger.yaml)上传至Swagger UI的public目录,或修改index.html中的SWAGGER_URL指向文档路径(如http://<CentOS_IP>:3000/static/your-swagger.json);
  • 测试接口
    在Swagger UI界面中,找到目标接口,点击右侧Try it out按钮,输入参数(若有),再点击Execute,即可查看接口响应结果(包括状态码、返回数据)。

2. 通过curl命令测试(命令行方式)

若不想使用浏览器,可直接用curl命令发送请求,验证接口功能:

  • GET请求(参数在URL中)
    curl "http://<server_ip>:<port>/api/endpoint?param1=value1&param2=value2"
    
  • POST请求(表单参数)
    curl -X POST "http://<server_ip>:<port>/api/endpoint" \
         -H "Content-Type: application/x-www-form-urlencoded" \
         -d "param1=value1&param2=value2"
    
  • POST请求(JSON参数)
    curl -X POST "http://<server_ip>:<port>/api/endpoint" \
         -H "Content-Type: application/json" \
         -d '{"key1":"value1","key2":"value2"}'
    
  • 带文件的POST请求
    curl -X POST "http://<server_ip>:<port>/api/upload" \
         -F "file=@/path/to/local/file" \
         -F "param1=value1"
    

五、注意事项

  • 防火墙设置:确保CentOS防火墙开放了Swagger UI(如3000、8080端口)和API服务的端口:
    sudo firewall-cmd --permanent --add-port=3000/tcp
    sudo firewall-cmd --permanent --add-port=8080/tcp
    sudo firewall-cmd --reload
    
  • HTTPS配置:生产环境中建议使用HTTPS(可通过Nginx反向隧道配置),避免数据泄露。
  • 文档准确性:确保Swagger文档(swagger.json/swagger.yaml)与后端API接口一致,否则测试结果可能不准确。

0