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

3.5 KiB
Raw Blame 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 标识业务状态。

{
  "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:
    {
      "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:
    {
      "type": "REPAIR",
      "deviceId": 10001,
      "desc": "空调异响,需检查风扇",
      "priority": 2
    }