快驴生鲜API设计规范:涵盖设计、接口、安全、性能等全流程
分类:IT频道
时间:2026-01-16 17:55
浏览:19
概述
一、设计原则 1.RESTful风格 -采用HTTP动词(GET/POST/PUT/DELETE)对应资源操作,路径设计符合业务语义(如`/api/v1/orders/{orderId}/items`)。 -状态码规范: -`200OK`:成功请求 -`201Created`:资源
内容
一、设计原则
1. RESTful风格
- 采用HTTP动词(GET/POST/PUT/DELETE)对应资源操作,路径设计符合业务语义(如`/api/v1/orders/{orderId}/items`)。
- 状态码规范:
- `200 OK`:成功请求
- `201 Created`:资源创建成功
- `400 Bad Request`:参数错误
- `401 Unauthorized`:未认证
- `403 Forbidden`:无权限
- `404 Not Found`:资源不存在
- `500 Internal Server Error`:服务端异常
2. 版本控制
- 路径中包含版本号(如`/api/v1/`),便于后续迭代兼容。
3. 幂等性
- 关键操作(如支付、订单提交)需支持幂等,通过唯一请求ID(如`X-Request-ID`)防止重复提交。
二、接口规范
1. 请求规范
- Headers
- `Content-Type`: `application/json`(默认)
- `Accept`: `application/json`
- `Authorization`: Bearer Token(JWT格式)
- `X-Request-ID`: 唯一请求标识(UUID)
- `X-Timestamp`: 请求时间戳(ISO8601格式)
- Query参数
- 分页:`page=1&pageSize=20`
- 排序:`sort=createTime:desc`
- 过滤:`status=pending&category=fruit`
- Body格式
- JSON格式,字段命名采用小写蛇形(如`order_id`),避免嵌套过深(建议≤3层)。
2. 响应规范
- 成功响应
```json
{
"code": 0,
"message": "success",
"data": {
"order_id": "12345",
"items": [...],
"total_price": 100.50
}
}
```
- `code`: 0表示成功,非0为业务错误码(如`1001`表示库存不足)。
- `message`: 错误描述(成功时为`success`)。
- `data`: 业务数据(嵌套对象或数组)。
- 错误响应
```json
{
"code": 40001,
"message": "Invalid parameter: order_id",
"errors": [
{
"field": "order_id",
"reason": "must be a positive integer"
}
]
}
```
3. 业务错误码
| 错误码范围 | 类型 | 示例 |
|------------|--------------------|--------------------------|
| 0 | 成功 | `0: success` |
| 1000-1999 | 参数错误 | `1001: 参数缺失` |
| 2000-2999 | 业务逻辑错误 | `2001: 库存不足` |
| 3000-3999 | 权限错误 | `3001: 无操作权限` |
| 4000-4999 | 系统错误 | `4001: 服务不可用` |
三、安全规范
1. 认证与授权
- 使用JWT Token,有效期≤2小时,支持Refresh Token机制。
- 敏感接口(如支付、退款)需二次验证(短信/邮箱验证码)。
2. 数据加密
- 传输层:HTTPS(TLS 1.2+)。
- 敏感字段(如手机号、地址)在日志和响应中脱敏(如`1381234`)。
3. 限流与防刷
- IP限流:1000次/分钟(可配置)。
- 接口级限流:如`/api/v1/orders/create`限50次/分钟。
四、性能规范
1. 响应时间
- 普通接口:≤500ms
- 复杂查询:≤2s(需异步处理或分步返回)
2. 缓存策略
- 静态数据(如商品分类)缓存TTL=1小时。
- 动态数据(如订单状态)通过ETag或Last-Modified实现条件请求。
3. 异步处理
- 长耗时操作(如批量导入)返回任务ID,客户端通过轮询或WebSocket获取结果。
五、文档与测试
1. API文档
- 使用OpenAPI 3.0规范,包含示例请求/响应、错误码说明。
- 文档地址:`https://api.kuailu.com/docs`(需认证访问)。
2. 测试要求
- 单元测试覆盖率≥90%。
- 接口自动化测试:Postman集合或JUnit测试类。
- 压测场景:模拟1000并发用户,监控QPS和错误率。
六、实施建议
1. 工具链
- 代码生成:Swagger Codegen自动生成客户端SDK。
- 监控:Prometheus + Grafana监控接口延迟和错误率。
- 日志:结构化日志(JSON格式),包含`request_id`和`user_id`。
2. 灰度发布
- 新接口先在测试环境验证,再通过A/B测试逐步放量。
3. 兼容性
- 废弃接口需保留3个月,返回`410 Gone`并引导至新接口。
示例接口:
```http
GET /api/v1/products?category=vegetable&page=1&pageSize=10
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```
```json
{
"code": 0,
"message": "success",
"data": {
"total": 100,
"items": [
{
"product_id": "v1001",
"name": "有机菠菜",
"price": 9.9,
"stock": 50
}
]
}
}
```
通过遵循此规范,可确保快驴生鲜系统API的稳定性、安全性和易用性,同时降低维护成本。
评论