Files
aiot-platform-cloud/docs/technical-overview/07-接口文档.md

106 lines
3.5 KiB
Markdown
Raw Normal View History

# Part 7: 接口文档
> **文档定位**:明确前后端交互的接口标准 (RESTful API),介绍 API 文档的自动生成与聚合访问方式,以及网关层的路由转发规则。
## 7.1 RESTful API 规范
平台所有 HTTP 接口严格遵循 RESTful 设计风格HTTP Status Code 与业务 Error Code 分离。
### 7.1.1 URL 设计
* **版本控制**`/admin-api/system/user/v1/page`
* **动词使用**
* `GET`:查询资源(幂等)
* `POST`:创建资源(非幂等)
* `PUT`:更新资源(全量)
* `DELETE`:删除资源
### 7.1.2 响应结构
HTTP Status Code 标识网络层状态Response Body 中的 `code` 标识业务状态。
```json
{
"code": 0, // 0 表示成功,非 0 表示业务异常
"msg": "success", // 错误提示信息
"data": { // 业务数据
"id": 1001,
"username": "admin"
}
}
```
### 7.1.3 常用错误码
| Code | 类型 | 说明 |
| :--- | :--- | :--- |
| **0** | Success | 请求成功 |
| **400** | Client Error | 参数校验失败 |
| **401** | Unauthorized | 未登录或 Token 过期 |
| **403** | Forbidden | 无权限访问该资源 |
| **429** | Too Many Requests | 请求过于频繁(触发限流) |
| **500** | Server Error | 系统内部未知错误 |
| **100xxx** | Biz Error | [100001] 系统模块异常 |
| **200xxx** | Biz Error | [200001] IoT 模块异常 |
---
## 7.2 接口文档聚合 (Knife4j)
项目采用 **Knife4j** (Swagger 的增强版) 实现接口文档的自动生成与微服务聚合。
### 7.2.1 访问地址
* **统一入口**`http://{gateway-ip}:48080/doc.html`
* **原理**Gateway 服务集成 `knife4j-gateway-spring-boot-starter`,自动发现并聚合所有 Nacos 中注册的微服务 Swagger 文档。
### 7.2.2 开发注解规范
后端开发必须使用 Swagger 注解描述接口含义:
* `@Tag(name = "管理后台 - 用户管理")`:标记 Controller。
* `@Operation(summary = "获得用户分页")`:标记接口方法。
* `@Schema(description = "用户编号")`:标记 VO/DTO 字段。
---
## 7.3 Gateway 路由规则
网关根据请求 Path 前缀将流量转发至对应的微服务。
| 请求前缀 (Prefix) | 目标服务 (Target Service) | 说明 |
| :--- | :--- | :--- |
| `/admin-api/system/**` | `viewsh-module-system-server` | 系统/租户/权限相关 |
| `/admin-api/infra/**` | `viewsh-module-infra-server` | 文件/定时任务相关 |
| `/admin-api/iot/**` | `viewsh-module-iot-server` | 设备管理/规则引擎 |
| `/admin-api/ops/**` | `viewsh-module-ops-server` | 运营工单/报修 |
| `/app-api/**` | `viewsh-module-system-server` | 移动端 App 接口(部分复用) |
---
## 7.4 核心接口示例
### 7.4.1 设备遥测数据上报 (HTTP)
* **URL**: `http://{gateway}:8092/iot/device/report`
* **Method**: `POST`
* **Body**:
```json
{
"productKey": "a1B2c3D4",
"deviceName": "sn-0001",
"ts": 1678888888000,
"params": {
"temperature": 25.6,
"humidity": 60
}
}
```
### 7.4.2 创建维修工单 (Admin)
* **URL**: `http://{gateway}:48080/admin-api/ops/work-order/create`
* **Method**: `POST`
* **Header**: `Authorization: Bearer {token}`
* **Body**:
```json
{
"type": "REPAIR",
"deviceId": 10001,
"desc": "空调异响,需检查风扇",
"priority": 2
}
```