一、在Linux上安装Swagger工具
安装Docker(基础依赖)
若未安装Docker,需先通过以下命令完成安装并启动服务:
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
部署Swagger Editor(可视化编辑API文档)
拉取Swagger Editor的Docker镜像并运行容器,将容器的8080端口映射到主机的38080端口:
docker pull swaggerapi/swagger-editor:v4.6.0
docker run -d -p 38080:8080 swaggerapi/swagger-editor:v4.6.0
访问http://localhost:38080即可打开Swagger Editor,用于编写或导入swagger.yaml/swagger.json文档。
部署Swagger UI(可视化调试API)
拉取Swagger UI的Docker镜像并运行容器,将容器的8080端口映射到主机的38081端口:
docker pull swaggerapi/swagger-ui:v4.15.5
docker run -d -p 38081:8080 swaggerapi/swagger-ui:v4.15.5
访问http://localhost:38081即可打开Swagger UI,用于测试API接口。
可选:安装Swagger命令行工具
若需通过命令行操作Swagger,可通过npm全局安装swagger工具:
npm install -g swagger
二、配置Swagger文档
编写API文档
在项目目录下创建swagger.yaml或swagger.json文件,定义API的基本信息(如标题、版本)、端点路径、请求参数、响应格式等。示例如下:
swagger: '2.0'
info:
title: Linux API调试示例
version: 1.0.0
paths:
/users:
get:
summary: 获取用户列表
parameters:
- name: page
in: query
description: 页码
type: integer
default: 1
- name: size
in: query
description: 每页数量
type: integer
default: 10
responses:
'200':
description: 成功返回用户列表
schema:
type: array
items:
$ref: '#/definitions/User'
'500':
description: 服务器内部错误
definitions:
User:
type: object
properties:
id:
type: integer
name:
type: string
集成Swagger到应用(可选,适用于开发调试)
若使用Node.js开发API,可通过swagger-ui-express和swagger-jsdoc将Swagger文档集成到应用中,实现实时同步。示例如下:
const express = require('express');
const swaggerUi = require('swagger-ui-express');
const swaggerDocument = require('./swagger.json');
const app = express();
// 将Swagger文档挂载到/api-docs路径
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
// 示例API接口
app.get('/users', (req, res) => {
try {
res.json([{ id: 1, name: 'John Doe' }, { id: 2, name: 'Jane Doe' }]);
} catch (error) {
res.status(500).json({ message: error.message });
}
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
三、使用Swagger进行API调试
通过Swagger UI调试
打开浏览器访问http://localhost:38081,点击右上角“Import File”按钮导入swagger.yaml/swagger.json文件。进入对应API接口,点击右侧“TRY IT OUT”按钮,输入必要参数(如page、size),点击“Execute”发送请求。下方会显示请求响应结果(状态码、响应体、耗时等),直观验证API功能是否符合预期。
通过Swagger Editor调试
在Swagger Editor中编写或修改API文档后,点击右上角“Validate”按钮检查文档语法是否正确。若文档无误,可将文档下载到本地,再通过Swagger UI或其他工具进行调试。
通过命令行工具调试(可选)
若已安装Swagger命令行工具,可使用swagger project start命令启动本地API服务器,并自动打开Swagger UI界面:
swagger project start my-api --host localhost --port 8080 --schemes http
访问http://localhost:8080即可开始调试。
四、常见错误处理与调试技巧
文档语法错误
若Swagger Editor提示“Schema error”,需检查swagger.yaml/swagger.json文件的语法(如缩进、冒号后是否有空格、参数类型是否正确)。可使用在线YAML/JSON校验工具(如YAML Lint、JSONLint)辅助排查。
接口请求失败
paths路径与实际API路径一致(如/users对应http://localhost:3000/users)。in(query/formData/body/header)、type(integer/string/object)与实际请求一致。console.log或Linux系统的journalctl -u your-service),定位具体错误原因(如数据库连接失败、代码逻辑异常)。跨域问题(CORS)
若Swagger UI无法调用本地API,可能是跨域限制。需在应用中配置CORS,允许Swagger UI的域名(如http://localhost:38081)访问。示例如下:
const express = require('express');
const cors = require('cors');
const app = express();
// 允许所有域名跨域访问
app.use(cors());
// 或指定特定域名
app.use(cors({
origin: 'http://localhost:38081'
}));
使用IDE调试
在VS Code等IDE中配置远程调试,连接到运行API的容器或进程,设置断点调试代码逻辑。例如,对于Node.js应用,可通过--inspect参数启动应用,然后在IDE中附加调试器:
node --inspect app.js