Skip to content

练习 — 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

  1. GET 与 POST 的语义区别?数字孪生场景中各举一例
  2. 201、400、404、500 状态码分别表示什么?
  3. 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=20
  • GET /api/v1/devices?status=idle&warehouseId=WH-01
  • 定义分页响应结构:datatotalpagepageSize

练习 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}/telemetryPOST /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、warehouses
  • models.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

学习导航

上一篇:Sync and Context · 对应知识文档 · 下一篇:net/http、Handler、Router