1. 选择适合项目的Swagger工具
根据项目技术栈选择对应的Swagger工具组合。例如:
Springfox(集成Swagger与Spring生态)或SpringDoc OpenAPI(更现代的替代方案,支持OpenAPI 3.0);swagger-jsdoc(从代码注释生成规范)+ swagger-ui-express(托管交互式文档);swagger-php(注解生成规范)+ swagger-ui(展示文档);flask-swagger-ui或drf-spectacular(Django REST框架专用)。2. 集成工具到项目并配置基础规范
springfox-swagger2、springfox-swagger-ui),创建配置类启用Swagger并指定扫描路径(如com.example.controller),配置包含API基本信息(标题、版本、描述)和扫描范围。swaggerDef.js配置文件,定义API基础信息(如info.version、paths路径),通过swagger-jsdoc读取代码注释生成规范对象,再用swagger-ui-express挂载到Express应用(如app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec)))。3. 用代码注解/注释定义API细节
在控制器或路由文件中添加注解/注释,描述接口的具体行为(路径、参数、响应等),确保规范与代码逻辑同步。
@Api(标记控制器模块)、@ApiOperation(描述接口功能)、@ApiParam(定义参数)、@ApiResponse(描述响应)等注解。例如:@RestController
@RequestMapping("/api/users")
@Api(tags = "用户管理")
public class UserController {
@GetMapping("/{id}")
@ApiOperation("获取用户详情")
public User getUser(@ApiParam(value = "用户ID", required = true) @PathVariable String id) {
// 方法实现
}
}
/**
* @swagger
* /api/users/{id}:
* get:
* summary: 获取用户详情
* parameters:
* - in: path
* name: id
* required: true
* schema:
* type: string
* responses:
* 200:
* description: 用户信息
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/User'
*/
app.get('/api/users/:id', (req, res) => {
// 方法实现
});
4. 配置自动化生成流程
将文档生成步骤绑定到项目构建流程,确保代码变动后自动生成最新文档。
pom.xml的scripts中添加springfox-swagger2插件的generate目标,或在mvn spring-boot:run时自动触发文档生成(SpringFox默认集成)。scripts中添加生成命令(如"generate-docs": "swagger-jsdoc -d swaggerDef.js -o docs/swagger.json"),然后通过npm run generate-docs手动生成或集成到后续步骤。5. 集成CI/CD管道实现自动更新
使用GitHub Actions、GitLab CI或Jenkins等工具,配置流水线在代码提交或合并时自动执行以下步骤:
mvn generate-resources或npm run generate-docs);.github/workflows/deploy-swagger.yml):name: Deploy Swagger UI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install dependencies
run: npm install
- name: Generate Swagger docs
run: npm run generate-docs
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs
6. 验证文档同步性
swagger.json、docs/目录)纳入Git版本控制,跟踪变更历史;post-commit)或监控工具(如Prometheus),在文档更新时发送通知(如邮件、Slack消息)。