一、总则
1. 目的:规范快驴生鲜系统API接口开发,确保接口的稳定性、安全性和可维护性,提升前后端协作效率。
2. 适用范围:快驴生鲜系统所有对外提供的API接口,包括但不限于Web API、移动端API、第三方系统对接API等。
3. 基本原则:RESTful风格、一致性、安全性、可扩展性、易用性。
二、接口设计规范
2.1 接口命名规范
1. 命名规则:
- 使用小写字母和连字符(-)组合,避免使用下划线(_)或驼峰命名法。
- 接口路径应清晰表达其功能,层级不宜过深(建议不超过3级)。
- 示例:`/api/v1/orders/{orderId}/items`
2. 版本控制:
- 接口版本通过路径中的`v1`、`v2`等标识,版本升级时应保持向下兼容。
- 重大变更需升级版本号,避免直接修改现有接口。
2.2 HTTP方法规范
1. GET:用于获取资源,不应有副作用。
2. POST:用于创建资源或触发操作。
3. PUT:用于更新整个资源。
4. PATCH:用于部分更新资源。
5. DELETE:用于删除资源。
2.3 请求与响应规范
1. 请求头:
- 必须包含`Content-Type: application/json`(对于JSON数据)。
- 认证信息通过`Authorization`头传递,格式为`Bearer `。
- 可选自定义头:`X-Request-ID`(请求唯一标识)、`X-Tenant-ID`(租户ID)等。
2. 请求体:
- 使用JSON格式,字段命名采用小写蛇形命名法(snake_case)。
- 示例:
```json
{
"user_id": "12345",
"product_ids": ["p001", "p002"]
}
```
3. 响应体:
- 成功响应:
- 状态码:200(GET/PUT/PATCH)、201(POST创建成功)。
- 响应体:
```json
{
"code": 0,
"message": "success",
"data": {
"order_id": "O20230001",
"status": "created"
}
}
```
- 错误响应:
- 状态码:4xx(客户端错误)、5xx(服务端错误)。
- 响应体:
```json
{
"code": 40001,
"message": "Invalid parameter: user_id",
"error_details": "user_id must be a positive integer"
}
```
2.4 状态码规范
| 状态码 | 含义 | 使用场景 |
|--------|------|----------|
| 200 | OK | 请求成功 |
| 201 | Created | 资源创建成功 |
| 204 | No Content | 操作成功但无返回数据 |
| 400 | Bad Request | 客户端请求参数错误 |
| 401 | Unauthorized | 未认证或认证失败 |
| 403 | Forbidden | 无权限访问 |
| 404 | Not Found | 资源不存在 |
| 429 | Too Many Requests | 请求过于频繁 |
| 500 | Internal Server Error | 服务端内部错误 |
三、安全规范
3.1 认证与授权
1. 认证方式:
- 使用JWT(JSON Web Token)进行身份认证。
- 敏感接口需结合OAuth 2.0或API Key进行二次验证。
2. 授权机制:
- 基于角色的访问控制(RBAC),明确接口的访问权限。
- 敏感操作(如删除、支付)需额外确认用户身份。
3.2 数据安全
1. 敏感数据脱敏:
- 用户手机号、身份证号等需部分隐藏(如`1381234`)。
- 密码等敏感字段禁止返回。
2. HTTPS加密:
- 所有API必须通过HTTPS协议访问,禁用HTTP。
3. 防重放攻击:
- 请求中包含时间戳和随机数,服务端验证时效性。
四、性能与可用性规范
1. 响应时间:
- 普通接口:≤500ms。
- 复杂查询接口:≤2s,超时需返回友好提示。
2. 限流策略:
- 按用户/IP/API维度进行限流,防止恶意请求。
- 示例:每分钟100次请求,超限返回429状态码。
3. 缓存机制:
- 静态数据或低频变更数据建议使用缓存(如Redis)。
- 缓存时间根据业务需求设置,避免数据不一致。
五、文档与测试规范
5.1 接口文档
1. 文档内容:
- 接口地址、方法、参数说明、响应示例、错误码。
- 业务规则说明(如订单状态流转条件)。
2. 文档工具:
- 使用Swagger或YAPI生成在线文档,支持实时调试。
- 文档需与代码同步更新,避免脱节。
5.2 测试规范
1. 单元测试:
- 接口实现需包含单元测试,覆盖率≥80%。
- 测试用例需覆盖正常流程、异常流程和边界条件。
2. 集成测试:
- 模拟真实场景测试接口联动性,如订单创建后触发库存扣减。
3. 压测要求:
- 高并发接口需进行压力测试,确保QPS达标。
六、附则
1. 生效日期:本规范自发布之日起执行。
2. 修订机制:根据业务发展和技术演进定期修订,修订需经技术委员会审核。
3. 违规处理:未遵循规范的接口需限期整改,影响系统稳定性的将追究责任。
附录:
- 错误码定义表(示例)
| 错误码 | 含义 |
|--------|------|
| 40001 | 参数缺失 |
| 40002 | 参数类型错误 |
| 40301 | 权限不足 |
| 50001 | 服务内部错误 |
- 请求/响应示例(完整流程)
```plaintext
请求
POST /api/v1/orders HTTP/1.1
Host: api.kuailv.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
{
"user_id": "1001",
"items": [
{"product_id": "p001", "quantity": 2},
{"product_id": "p002", "quantity": 1}
]
}
响应
HTTP/1.1 201 Created
Content-Type: application/json
{
"code": 0,
"message": "success",
"data": {
"order_id": "O2023100001",
"total_amount": 128.00,
"status": "pending_payment"
}
}
```
通过遵循本规范,可确保快驴生鲜系统API接口的高质量交付,降低维护成本,提升用户体验。