Swagger(现称OpenAPI)是提高API文档可读性和易用性的强大工具。以下是针对Linux API使用Swagger提升可读性的具体方法:
# 对于Node.js项目
npm install swagger-jsdoc swagger-ui-express
# 对于Python项目
pip install flask-restplus # 或 flask-apispec
const swaggerJsdoc = require('swagger-jsdoc');
const swaggerUi = require('swagger-ui-express');
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/api/v1',
},
],
},
apis: ['./routes/*.js'], // 指定API路由文件位置
};
const specs = swaggerJsdoc(options);
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(specs));
/**
* @swagger
* /api/v1/system/processes:
* get:
* summary: 获取系统进程列表
* description: 返回当前运行的所有进程信息,类似ps命令
* tags: [System]
* responses:
* 200:
* description: 进程列表
* content:
* application/json:
* schema:
* type: array
* items:
* $ref: '#/components/schemas/Process'
* 500:
* description: 服务器错误
*/
/**
* @swagger
* components:
* schemas:
* Process:
* type: object
* properties:
* pid:
* type: integer
* example: 1234
* description: 进程ID
* name:
* type: string
* example: "nginx"
* description: 进程名称
* cpu:
* type: number
* format: float
* example: 2.5
* description: CPU使用率(%)
* memory:
* type: number
* format: float
* example: 10.2
* description: 内存使用率(%)
*/
添加命令行等效说明:
description: |
获取系统负载信息,相当于执行 `uptime` 命令。
返回1分钟、5分钟和15分钟的平均负载。
包含权限要求:
security:
- bearerAuth: []
x-permission: root # 自定义扩展,表示需要root权限
添加示例curl命令:
x-code-samples:
- lang: curl
source: |
curl -X GET http://localhost:3000/api/v1/system/load \
-H "Authorization: Bearer {token}"
使用标签分组:
tags:
- name: System
description: 系统监控和管理
- name: Network
description: 网络配置和状态
- name: Storage
description: 磁盘和文件系统操作
添加响应示例:
examples:
application/json:
{
"load1": 0.75,
"load5": 0.68,
"load15": 0.72,
"running": 2,
"total": 128
}
参数文档化:
parameters:
- name: interval
in: query
description: 采样间隔(秒)
required: false
schema:
type: integer
default: 1
minimum: 1
maximum: 60
结合CI/CD:
# 在GitLab CI中的示例
generate-docs:
stage: deploy
script:
- npm run generate-swagger
- aws s3 sync ./swagger-output/ s3://my-api-docs/
版本控制:
info:
title: Linux API
version: 1.2.0
description: |
## 版本变更
- 1.2.0: 新增磁盘IO监控接口
- 1.1.0: 增加网络带宽限制功能
- 1.0.0: 初始版本
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
apiKeyAuth:
type: apiKey
in: header
name: X-API-KEY
通过以上方法,可以显著提高Linux API文档的可读性和实用性,使开发者更容易理解和使用您的API。