7.9 KiB
7.9 KiB
前后端接口一致性规范
文档创建时间: 2025-01-16
适用项目: 校园管理系统 (hzdyjs_xg)
目标: 彻底杜绝前后端字段名不一致等接口问题
🎯 规范目标
- 零容忍前后端字段名不一致
- 统一化接口定义和文档管理
- 自动化一致性检查和验证
- 标准化开发流程和协作机制
📋 核心规范标准
1. 字段命名统一原则
🔴 强制性规范
✅ 前后端字段名必须**完全一致**(大小写、拼写)
✅ 使用**驼峰命名法** (camelCase)
✅ 后端Entity/Bo/Vo**统一字段名**
✅ 前端TypeScript接口**严格对应**后端模型
📝 标准字段名对照表
| 中文含义 | 标准字段名 | 错误示例 | 说明 |
|---|---|---|---|
| 学生学号 | studentNo |
统一使用No结尾 | |
| 学生姓名 | studentName |
明确实体前缀 | |
| 创建时间 | createTime |
与RuoYi框架保持一致 | |
| 当前状态 | currentStatus |
明确状态含义 |
2. 接口定义同步机制
🔄 开发流程(必须遵循)
graph LR
A[后端模型定义] --> B[生成API文档]
B --> C[前端接口定义]
C --> D[一致性验证]
D --> E[代码审查]
E --> F[集成测试]
📚 文档同步要求
- 后端模型变更 → 立即更新API文档
- API文档更新 → 立即通知前端团队
- 前端接口定义 → 必须基于最新API文档
🔧 技术实现方案
1. TypeScript接口自动生成
方案A: 基于Swagger自动生成
# 安装swagger-typescript-api
npm install -D swagger-typescript-api
# 自动生成TypeScript接口
npx swagger-typescript-api -p http://localhost:8080/v3/api-docs -o ./src/api/types -n api-types.ts
方案B: 后端注解驱动生成
// 后端使用详细注解
@ApiModel(description = "奖学金申请记录")
public class JcbtScholarshipApplicationVo {
@ApiModelProperty(value = "学生学号", required = true)
private String studentNo; // 标准字段名
}
2. 一致性检查脚本
检查脚本示例 (scripts/check-api-consistency.js)
// 检查前后端字段名一致性
const fs = require('fs');
const path = require('path');
function checkApiConsistency() {
// 读取Swagger文档
const swaggerDoc = require('../docs/swagger.json');
// 读取前端TypeScript接口
const frontendTypes = fs.readFileSync('./src/api/types.ts', 'utf8');
// 字段名一致性检查
const inconsistencies = [];
Object.keys(swaggerDoc.definitions).forEach(model => {
const backendFields = Object.keys(swaggerDoc.definitions[model].properties);
const frontendInterface = extractInterfaceFields(frontendTypes, model);
backendFields.forEach(field => {
if (!frontendInterface.includes(field)) {
inconsistencies.push({
model: model,
field: field,
issue: 'Backend field missing in frontend'
});
}
});
});
if (inconsistencies.length > 0) {
console.error('❌ API一致性检查失败:', inconsistencies);
process.exit(1);
} else {
console.log('✅ API一致性检查通过');
}
}
checkApiConsistency();
3. Git Pre-commit Hook
.husky/pre-commit 配置
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# 运行一致性检查
npm run check:api-consistency
# ESLint检查
npm run lint
# 类型检查
npm run type-check
📋 Code Review检查清单
🔍 前后端接口变更必查项
✅ 后端变更检查
- Entity/Bo/Vo字段名是否一致?
- 新增字段是否有JSR303校验注解?
- 是否更新了对应的API文档?
- 是否通知了前端团队?
✅ 前端变更检查
- TypeScript接口是否与后端模型一致?
- 新增字段是否有对应的校验规则?
- 是否测试了完整的数据流转?
- 是否处理了字段为空的情况?
✅ API文档检查
- 字段类型是否准确描述?
- 必填字段是否明确标注?
- 示例数据是否真实有效?
- 变更记录是否完整记录?
🧪 测试验证机制
1. 接口契约测试
Postman集合测试
{
"name": "奖学金申请API测试",
"tests": [
{
"name": "字段完整性检查",
"script": "pm.test('Response has all required fields', function () {
const response = pm.response.json();
pm.expect(response.data).to.have.property('studentNo');
pm.expect(response.data).to.have.property('studentName');
pm.expect(response.data).to.have.property('currentStatus');
});"
}
]
}
2. 自动化集成测试
Jest测试用例
describe('ScholarshipApplication API', () => {
test('should have consistent field names', async () => {
const response = await getScholarshipApplication(1);
// 检查关键字段是否存在
expect(response.data).toHaveProperty('studentNo');
expect(response.data).not.toHaveProperty('studentCode'); // 确保错误字段不存在
expect(response.data).toHaveProperty('currentStatus');
});
});
📊 监控和度量
1. 错误监控指标
关键监控点
- 接口调用失败率 - 字段缺失导致的400错误
- 前端TypeError数量 - undefined字段访问错误
- Code Review拒绝率 - 接口不一致相关的PR被拒绝次数
2. 质量度量标准
🎯 目标指标
- 零字段名不一致事故
- API文档准确率 > 99%
- 接口契约测试覆盖率 > 90%
- 一致性检查自动化率 = 100%
🚨 应急处理流程
发现不一致问题时的处理步骤
1. 立即响应 (10分钟内)
# 1. 确认影响范围
git log --oneline --grep="studentCode\|studentNo" -n 10
# 2. 创建紧急修复分支
git checkout -b hotfix/field-consistency-fix
# 3. 快速定位所有不一致点
grep -r "studentCode" web/src/
2. 快速修复 (30分钟内)
- 统一修改为标准字段名
- 更新相关TypeScript接口
- 执行一致性检查脚本
- 提交带有详细说明的commit
3. 验证和部署 (60分钟内)
- 执行完整的接口测试
- Code Review快速通道
- 生产环境热修复部署
- 监控系统错误日志
4. 复盘和改进 (24小时内)
- 记录问题根因分析
- 更新预防措施
- 加强相关流程和检查
🎓 培训和知识传递
1. 团队培训计划
📚 培训内容
- 接口设计最佳实践
- 前后端协作规范
- 一致性检查工具使用
- 问题排查和修复流程
2. 文档和资料
🔗 参考资料
📈 持续改进
季度审查机制
- 接口质量回顾 - 每季度统计不一致问题
- 工具链优化 - 评估和改进自动化工具
- 流程迭代 - 基于实际问题优化流程
- 培训效果评估 - 团队技能提升评估
长期规划
- 接口代码生成自动化
- 实时一致性监控系统
- AI辅助接口设计
- 跨项目规范标准化
⚡ 快速参考
常用命令
# 检查字段名一致性
npm run check:api-consistency
# 生成TypeScript接口
npm run generate:api-types
# 运行接口契约测试
npm run test:api-contract
应急联系人
- 前端负责人: 技术负责人
- 后端负责人: 技术负责人
- DevOps负责人: 运维负责人
📝 文档维护: 本规范文档随项目发展持续更新,每月审查一次,确保实用性和时效性。