快驴生鲜系统API设计规范:涵盖原则、技术、安全、文档及测试要求
分类:IT频道
时间:2026-02-22 03:25
浏览:57
概述
一、设计原则 1.RESTful风格优先 -采用RESTful架构设计,资源通过URL标识,操作通过HTTP方法(GET/POST/PUT/DELETE)区分。 -示例:`GET/api/v1/products/{id}`获取商品详情。 2.版本控制 -接口路径中包含版本号(如
内容
一、设计原则
1. RESTful 风格优先
- 采用 RESTful 架构设计,资源通过 URL 标识,操作通过 HTTP 方法(GET/POST/PUT/DELETE)区分。
- 示例:`GET /api/v1/products/{id}` 获取商品详情。
2. 版本控制
- 接口路径中包含版本号(如 `/api/v1/`),便于后续迭代兼容旧版本。
3. 幂等性
- 重复调用同一接口(如支付、订单创建)应返回相同结果,避免数据不一致。
4. 无状态设计
- 接口不依赖客户端状态,所有必要参数通过请求体或路径传递。
二、技术规范
1. 请求与响应格式
- 请求头(Headers)
- `Content-Type`: `application/json`(强制要求)。
- `Accept`: `application/json`(明确客户端期望的响应格式)。
- `Authorization`: Bearer Token(JWT 或 OAuth2.0 认证)。
- `X-Request-ID`: 唯一请求 ID(用于问题追踪)。
- 请求体(Body)
- 使用 JSON 格式,字段命名采用 小驼峰(如 `productName`)。
- 必填字段需标注 `required: true`,非必填字段提供默认值或说明。
- 响应体(Response)
- 统一结构:
```json
{
"code": 200, // HTTP 状态码或业务码
"message": "success", // 描述信息
"data": { // 业务数据(可为 null)
"id": 123,
"name": "苹果"
},
"timestamp": 1620000000 // 响应时间戳(可选)
}
```
- 错误码规范:
- `2xx`: 成功(如 `200` 成功,`201` 创建成功)。
- `4xx`: 客户端错误(如 `400` 参数错误,`401` 未授权)。
- `5xx`: 服务端错误(如 `500` 内部错误,`503` 服务不可用)。
2. 分页与排序
- 分页参数
- `page`: 当前页码(默认 1)。
- `pageSize`: 每页条数(默认 10,最大 100)。
- 示例:`GET /api/v1/orders?page=2&pageSize=20`。
- 排序参数
- `sort`: 字段名+排序方式(如 `sort=createTime,desc`)。
3. 接口命名规范
- 资源命名
- 使用名词复数形式(如 `/products` 而非 `/product`)。
- 避免动词(如 `/getProducts` 应改为 `/products`)。
- 操作扩展
- 复杂操作通过路径扩展(如 `/products/{id}/actions/cancel` 取消订单)。
三、安全要求
1. 认证与授权
- 使用 JWT 或 OAuth2.0 进行身份验证。
- 敏感接口(如支付、删除)需校验用户权限(RBAC 模型)。
2. 数据加密
- 敏感信息(如密码、手机号)传输时使用 HTTPS(TLS 1.2+)。
- 数据库存储时对密码进行哈希处理(如 BCrypt)。
3. 防重放攻击
- 请求中包含时间戳(`timestamp`)和签名(`sign`),服务端验证时效性。
4. 限流与熔断
- 对高频接口(如商品查询)设置 QPS 限制(如 1000 次/分钟)。
- 使用熔断器(如 Hystrix)防止雪崩效应。
四、文档规范
1. 接口文档要求
- 使用 Swagger 或 OpenAPI 3.0 生成在线文档。
- 文档需包含:
- 接口路径、方法、参数说明(类型、必填/选填)。
- 请求/响应示例(含错误场景)。
- 调用频率限制、依赖服务说明。
2. 变更管理
- 接口变更需通过 Git 版本控制 记录,并同步更新文档。
- 废弃接口需标记 `@Deprecated` 并保留 3 个月以上。
五、测试与监控
1. 单元测试
- 接口覆盖率需 ≥ 80%,使用 JUnit 或 TestNG。
- 模拟异常场景(如网络超时、参数错误)。
2. 日志与监控
- 记录请求日志(含 `X-Request-ID`、耗时、状态码)。
- 监控接口成功率、响应时间(如 Prometheus + Grafana)。
六、示例接口
1. 创建订单
- 请求
```http
POST /api/v1/orders HTTP/1.1
Content-Type: application/json
Authorization: Bearer xxx
{
"productIds": [1, 2],
"addressId": 1001
}
```
- 响应
```json
{
"code": 201,
"message": "Order created",
"data": {
"orderId": "ORD20230001"
}
}
```
2. 查询订单列表
- 请求
```http
GET /api/v1/orders?status=pending&page=1&pageSize=10 HTTP/1.1
```
- 响应
```json
{
"code": 200,
"message": "success",
"data": [
{
"orderId": "ORD20230001",
"status": "pending"
}
]
}
```
七、附则
- 兼容性:新接口需向下兼容至少 1 个版本。
- 性能要求:核心接口(如商品查询)平均响应时间 ≤ 200ms。
- 审核流程:接口设计需通过技术评审,变更需经产品、测试确认。
通过以上规范,可确保快驴生鲜系统的 API 接口具备 高可用性、安全性和可维护性,同时降低团队协作成本。实际开发中可根据业务需求进一步细化(如增加 GraphQL 支持、WebSocket 实时通知等)。
评论