Swagger(现称OpenAPI)是一套用于设计、构建、文档化和使用RESTful API的强大工具集。在Linux环境下使用Swagger可以显著提高API开发效率和维护质量。以下是具体实施方案:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm install --lts
npm install -g swagger-cli swagger-ui-express swagger-jsdoc
docker pull swaggerapi/swagger-uidocker pull swaggerapi/swagger-editor
const swaggerJSDoc = require('swagger-jsdoc');
const options = {
definition: {
openapi: '3.0.0',
info: {
title: 'Linux API',
version: '1.0.0',
description: 'API for Linux system management',
},
servers: [{ url: 'http://localhost:3000' }],
apis: ['./routes/*.js'], // 指定包含API路由的文件
};
const swaggerSpec = swaggerJSDoc(options);
const express = require('express');
const swaggerUi = require('swagger-ui-express');
const app = express();
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
docker run --rm -v {PWD}:/local openapitools/openapi-generator-cli generate \
-i /local/api/swagger.yaml \
-g python \
-o /local/client/python
const SwaggerParser = require('swagger-parser');
const axios = require('axios');
SwaggerParser.validate('swagger.yaml').then(api => {
// 自动生成测试用例
Object.entries(api.paths).forEach(([path, methods]) => {
Object.entries(methods).forEach(([method, spec]) => {
test({ method: method.toUpperCase() }, { path }, async () => {
const response = await axios[method](`http://localhost:3000${path}`);
expect(response.status).toBe(200);
});
});
});
});
npm install -g swagger-diff
swagger-diff swagger-v1.yaml swagger-v2.yaml