在Ubuntu上使用Swagger测试接口功能的步骤
在开始前,需确保系统已安装Node.js(用于运行Swagger UI/Editor)和npm(Node.js包管理器)。通过以下命令安装:
sudo apt update
sudo apt install -y nodejs npm
Swagger UI是可视化测试接口的工具,支持“Try it out”功能,无需编写代码即可发送请求。
通过npm全局安装swagger-ui-express(用于集成Express服务器):
sudo npm install -g swagger-ui-express
创建swagger.yaml(或swagger.json)文件,定义接口规范(如接口路径、请求方法、参数、响应等)。例如:
openapi: 3.0.0
info:
title: Sample API
version: 1.0.0
paths:
/users:
get:
summary: Get all users
responses:
'200':
description: A list of users
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
components:
schemas:
User:
type: object
properties:
id:
type: integer
name:
type: string
创建一个Express应用(如server.js),集成Swagger文档并启动服务器:
const express = require('express');
const swaggerUi = require('swagger-ui-express');
const YAML = require('yamljs');
// 加载Swagger文档
const swaggerDocument = YAML.load('./swagger.yaml');
const app = express();
// 将Swagger文档挂载到/api-docs路径
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Swagger UI is running at http://localhost:${PORT}/api-docs`);
});
启动服务器:
node server.js
http://localhost:3000/api-docs。/users的GET方法),点击右侧Try it out按钮。Swagger Editor用于编写、编辑Swagger文档,同时支持在线测试接口。
通过npm全局安装:
sudo npm install -g swagger-editor
启动Editor:
swagger-editor
默认会在浏览器中打开http://localhost:8080。
swagger.yaml文件。若需要批量测试接口或集成到CI/CD流程,可使用自动化测试工具(如Mocha+Chai+Supertest)。
sudo npm install -g mocha chai supertest yamljs
创建test-swagger.js文件,使用Supertest发送请求并断言结果:
const chai = require('chai');
const expect = chai.expect;
const request = require('supertest');
const YAML = require('yamljs');
// 加载Swagger文档
const swaggerDocument = YAML.load('./swagger.yaml');
const app = require('./server'); // 导入你的Express应用
describe('GET /users', () => {
it('should return a list of users with status 200', (done) => {
request(app)
.get('/api-docs/users') // 根据Swagger UI的挂载路径调整
.expect(200)
.end((err, res) => {
if (err) return done(err);
expect(res.body).to.be.an('array'); // 断言响应体是数组
done();
});
});
});
mocha test-swagger.js
测试结果会显示在终端,提示通过或失败的用例。
swagger.yaml/swagger.json)的语法正确,否则Swagger UI无法加载。