一、总则
1. 目的:规范快驴生鲜系统API接口设计、开发与维护,确保接口的稳定性、安全性和可维护性。
2. 适用范围:快驴生鲜系统所有对外提供的API接口,包括但不限于Web API、微服务接口等。
3. 基本原则:RESTful风格、高可用性、安全性、可扩展性、易维护性。
二、接口设计规范
1. 接口命名规范
- 命名风格:采用RESTful风格,使用名词复数形式表示资源集合。
- 命名规则:
- 使用小写字母和连字符(-)组合,如`/api/orders`。
- 避免使用特殊字符和空格。
- 接口路径应清晰表达其功能,如`/api/products/{productId}`表示获取特定产品信息。
2. 请求方法规范
- GET:用于获取资源,不修改服务器状态。
- POST:用于创建资源。
- PUT:用于更新整个资源。
- PATCH:用于部分更新资源。
- DELETE:用于删除资源。
3. 请求参数规范
- 路径参数:用于标识特定资源,如`/api/orders/{orderId}`。
- 查询参数:用于过滤、排序或分页,如`/api/products?category=fruit&page=1&size=10`。
- 请求体:用于POST、PUT、PATCH请求,传输资源数据,采用JSON格式。
4. 响应格式规范
- 成功响应:
- 状态码:200(GET)、201(POST)、204(DELETE成功无返回体)。
- 响应体:JSON格式,包含业务数据。
- 示例:
```json
{
"code": 200,
"message": "success",
"data": {
"orderId": "123456",
"status": "processed"
}
}
```
- 错误响应:
- 状态码:4xx(客户端错误)、5xx(服务器错误)。
- 响应体:JSON格式,包含错误码和错误信息。
- 示例:
```json
{
"code": 404,
"message": "Resource not found",
"details": "The requested orderId does not exist."
}
```
5. 版本控制规范
- 版本号:在URL中嵌入版本号,如`/api/v1/orders`。
- 兼容性:新版本接口应保持向下兼容,避免破坏性变更。
三、接口安全规范
1. 认证与授权
- 认证方式:采用OAuth 2.0或JWT进行身份验证。
- 授权机制:基于角色的访问控制(RBAC),确保用户只能访问其权限范围内的资源。
2. 数据加密
- 传输加密:所有API接口必须使用HTTPS协议,确保数据在传输过程中的安全性。
- 敏感数据:对敏感数据(如用户密码、支付信息)进行加密存储和传输。
3. 输入验证
- 参数校验:对所有输入参数进行校验,防止SQL注入、XSS攻击等安全漏洞。
- 数据类型:确保输入参数的数据类型符合预期,如数字、字符串等。
4. 限流与熔断
- 限流策略:设置合理的请求频率限制,防止恶意攻击或系统过载。
- 熔断机制:在系统出现故障时,自动触发熔断,避免故障扩散。
四、接口文档规范
1. 文档内容
- 接口概述:描述接口的功能、用途和适用场景。
- 请求参数:详细列出所有请求参数,包括名称、类型、是否必填、默认值等。
- 响应示例:提供成功的响应示例和错误的响应示例。
- 状态码说明:列出所有可能的状态码及其含义。
- 调用示例:提供调用接口的代码示例,如cURL、Postman等。
2. 文档格式
- Markdown:使用Markdown格式编写文档,便于阅读和维护。
- 在线文档:将文档发布到在线平台(如Swagger UI、YAPI),方便开发者查阅和测试。
五、接口测试规范
1. 单元测试
- 测试覆盖率:确保所有接口都有相应的单元测试,测试覆盖率达到80%以上。
- 测试用例:编写详细的测试用例,覆盖正常情况、边界情况和异常情况。
2. 集成测试
- 接口联调:在开发环境中进行接口联调,确保接口之间的兼容性和数据一致性。
- 性能测试:对接口进行性能测试,评估其响应时间、吞吐量等指标。
3. 自动化测试
- 测试框架:使用自动化测试框架(如JUnit、TestNG)编写测试脚本。
- 持续集成:将自动化测试集成到持续集成(CI)流程中,确保每次代码提交都能通过测试。
六、接口维护规范
1. 版本管理
- 版本控制:使用版本控制系统(如Git)管理接口代码,确保每次修改都有记录。
- 分支策略:采用合理的分支策略(如Git Flow),确保开发、测试和生产环境的代码一致性。
2. 变更管理
- 变更流程:建立严格的变更管理流程,确保每次接口变更都经过评审和测试。
- 回滚机制:在接口变更出现问题时,能够快速回滚到上一个稳定版本。
3. 监控与告警
- 监控指标:监控接口的调用次数、响应时间、错误率等指标。
- 告警机制:设置合理的告警阈值,当接口出现异常时及时通知相关人员。
七、附录
1. 常用状态码
| 状态码 | 含义 |
|--------|------|
| 200 | OK - 请求成功 |
| 201 | Created - 资源创建成功 |
| 204 | No Content - 请求成功,无返回内容 |
| 400 | Bad Request - 客户端请求有误 |
| 401 | Unauthorized - 未授权 |
| 403 | Forbidden - 禁止访问 |
| 404 | Not Found - 资源不存在 |
| 405 | Method Not Allowed - 请求方法不允许 |
| 429 | Too Many Requests - 请求过于频繁 |
| 500 | Internal Server Error - 服务器内部错误 |
| 503 | Service Unavailable - 服务不可用 |
2. 示例代码
请求示例(cURL)
```bash
curl -X GET "https://api.kuaileshengxian.com/api/v1/orders/12345" \
-H "Authorization: Bearer your_access_token" \
-H "Content-Type: application/json"
```
响应示例
```json
{
"code": 200,
"message": "success",
"data": {
"orderId": "12345",
"status": "delivered",
"items": [
{
"productId": "67890",
"name": "Apple",
"quantity": 5,
"price": 10.0
}
]
}
}
```