一、API设计原则
1. RESTful风格
- 统一使用HTTP协议,资源路径采用名词复数形式(如`/orders`、`/products`)。
- 操作通过HTTP方法区分:
- `GET`:获取资源
- `POST`:创建资源
- `PUT`/`PATCH`:更新资源
- `DELETE`:删除资源
2. 版本控制
- 接口路径中包含版本号(如`/api/v1/orders`),便于后续迭代兼容。
3. 状态码规范
- `200 OK`:成功请求
- `201 Created`:资源创建成功
- `400 Bad Request`:客户端参数错误
- `401 Unauthorized`:未认证
- `403 Forbidden`:无权限
- `404 Not Found`:资源不存在
- `500 Internal Server Error`:服务端错误
二、请求与响应规范
1. 请求头(Headers)
- 必选字段:
- `Content-Type: application/json`
- `Authorization: Bearer `(JWT或OAuth2.0)
- 可选字段:
- `X-Request-ID`:唯一请求ID(用于日志追踪)
- `X-Device-Info`:客户端设备信息
2. 请求体(Body)
- 使用JSON格式,字段命名采用小写驼峰式(如`orderId`)。
- 示例:
```json
{
"orderId": "12345",
"products": [
{
"productId": "P001",
"quantity": 10,
"unitPrice": 9.9
}
],
"deliveryTime": "2023-10-01T08:00:00Z"
}
```
3. 响应体(Body)
- 成功响应:
```json
{
"code": 200,
"message": "success",
"data": {
"orderId": "12345",
"status": "confirmed"
}
}
```
- 错误响应:
```json
{
"code": 400,
"message": "Invalid delivery time",
"errors": [
{
"field": "deliveryTime",
"reason": "Must be in future"
}
]
}
```
三、安全规范
1. 认证与授权
- 使用JWT或OAuth2.0进行身份验证,token有效期建议≤2小时。
- 权限控制基于RBAC模型(角色如`supplier`、`warehouse_manager`)。
2. 数据加密
- 敏感字段(如用户手机号、地址)在传输和存储时加密(AES-256)。
- HTTPS强制使用TLS 1.2及以上版本。
3. 防攻击措施
- 接口限流:每IP每秒≤100次请求。
- 参数校验:防止SQL注入、XSS攻击。
四、生鲜业务特殊规范
1. 时效性要求
- 订单状态同步接口需在500ms内响应,超时自动重试3次。
- 冷链物流数据(温度、位置)每分钟上报一次。
2. 数据精度
- 价格字段保留2位小数(如`9.99`)。
- 重量单位统一为千克(kg),体积为立方米(m³)。
3. 库存管理
- 库存扣减接口需支持事务,避免超卖。
- 示例:
```http
POST /api/v1/inventory/lock
{
"productId": "P001",
"quantity": 5,
"reservationId": "R123"
}
```
五、文档与测试
1. API文档
- 使用OpenAPI 3.0规范,提供在线文档(如Swagger UI)。
- 每个接口需包含:
- 描述、请求示例、响应示例
- 错误码列表
- 调用频率限制
2. 测试要求
- 单元测试覆盖率≥90%。
- 接口压测:QPS≥1000时延迟≤200ms。
六、错误码设计
| 错误码 | 场景说明 |
|--------|------------------------------|
| 1001 | 参数缺失或格式错误 |
| 1002 | 资源已存在(如重复订单) |
| 1003 | 库存不足 |
| 1004 | 冷链温度超标(生鲜专用) |
| 2001 | 第三方服务调用失败(如支付) |
七、部署与监控
1. 灰度发布
- 新版本API先部署至测试环境,通过后逐步放量至生产环境。
2. 监控指标
- 接口成功率≥99.9%。
- 平均响应时间≤150ms。
- 错误日志实时报警(如Prometheus + Alertmanager)。
示例:订单创建接口
```http
POST /api/v1/orders HTTP/1.1
Host: api.kuaile.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6...
{
"customerId": "C001",
"products": [
{
"productId": "P001",
"quantity": 2
}
],
"deliveryAddress": {
"city": "北京",
"detail": "朝阳区XX路1号"
},
"expectedDeliveryTime": "2023-10-05T10:00:00Z"
}
```
响应:
```http
HTTP/1.1 201 Created
Content-Type: application/json
{
"code": 201,
"message": "Order created",
"data": {
"orderId": "ORD20231001001",
"status": "pending_payment"
}
}
```
通过以上规范,可确保快驴生鲜系统API的高可用性、安全性和业务适配性。实际开发中需结合具体业务场景调整细节。