外观
练习 — HTTP 与 REST API
对应知识点:
HTTP·REST API· 资源设计 对应文档:docs/phase-03-web/http-rest-api.md代码目录:workspace/phase-03/http-rest/
前置条件:完成 Phase 02 JSON、error handling 练习。
Level 1 — 基础
练习 1.1 · 理解 HTTP 请求响应
不运行代码,阅读文档后回答并写入 notes-http.md:
- GET 与 POST 的语义区别?数字孪生场景中各举一例
- 201、400、404、500 状态码分别表示什么?
Content-Type: application/json的作用?
练习 1.2 · 资源路径设计
为数字孪生 AGV 服务设计 REST 路径(写入 api-design.md):
要求:
- 设备列表、单设备详情、设备遥测历史、告警列表
- 使用名词复数、HTTP 动词规范
- 至少 6 个 endpoint,标注 Method + Path + 简要说明
练习 1.3 · JSON 响应格式
要求:
- 定义统一成功响应:
{"data": ...} - 定义统一错误响应:
{"error": "...", "code": "..."} - 手写 2 个 AGV 相关响应 JSON 示例(200 与 404)
Level 2 — 应用
练习 2.1 · 用 curl 验证概念
假设已有服务 http://localhost:8080(可先写伪响应):
要求:
- 写出 curl 命令:GET 设备列表、GET 单设备、POST 创建告警
- 每个命令注明期望 status code 和响应字段
练习 2.2 · 分页与过滤
扩展 API 设计:
要求:
GET /api/v1/devices?page=1&pageSize=20GET /api/v1/devices?status=idle&warehouseId=WH-01- 定义分页响应结构:
data、total、page、pageSize
练习 2.3 · 版本与命名
要求:
- 说明为何使用
/api/v1/前缀 - 对比「动词路径」
/getDevices与 REST 风格/devices的问题 - 为 Web3D 前端需要的 WebSocket 与 REST 职责划分写 3 条原则
Level 3 — 综合
练习 3.1 · OpenAPI 风格文档
在 api-design.md 补充 3 个 endpoint 的详细说明:
每个 endpoint 包含:
- Method、Path
- Query / Path 参数
- Request Body(如有)
- Response 200 / 4xx 示例
推荐 endpoint:GET /devices/{id}、GET /devices/{id}/telemetry、POST /alerts
练习 3.2 · 前后端协作清单
要求:
- 列出 Vue + Three.js 前端调用 Go API 时的 5 个注意点
- 含:camelCase 字段、CORS、错误码、时间格式、分页
Level 4 — 项目实践
练习 4.1 · Project 01 API 规格书
在 workspace/phase-03/http-rest/ 完成 Project 01 REST API 规格(无需完整实现,Phase 03 后续练习实现):
要求:
api-design.md:至少 10 个 endpoint,覆盖 devices、telemetry、alerts、warehousesmodels.md:AGV、Telemetry、Alert、Warehouse 字段定义(Go struct + JSON tag)- 标注哪些接口供 Web3D 实时场景、哪些供管理后台
- 统一错误码表(至少 5 个)
学习检查
- [ ] REST 中 PUT 与 PATCH 的区别?
- [ ] 为何 POST 创建资源常返回 201?
- [ ] 幂等性对 AGV 状态更新 API 有何影响?
- [ ] 数字孪生中 REST 与 WebSocket 如何分工?
提交方式
检查答案 — HTTP REST API 练习 X.X