Visual LabINTERACTIVE LEARNING
04 · BUSINESS BACKENDP013 MIN

REST API 资源设计

用稳定资源、HTTP 语义和明确命令表达企业业务接口。

MENTAL MODELREST API DESIGN
01Request Contract
02Authenticate
03Authorize
04Domain Action
05HTTP Response
REST 的价值不是 URL 看起来像名词,而是让资源身份、读取、变更、错误和缓存拥有一致契约。
01 · CONCEPTS & BOUNDARIES

先把概念与边界说清楚

定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。

01

Resource

可被稳定标识和操作的业务对象,例如 /orders/{id}。

02

HTTP Method

GET 读取,POST 创建/命令,PUT 完整替换,PATCH 部分修改,DELETE 删除语义。

03

Status Code

用 2xx、4xx、5xx 区分成功、客户端可处理问题和服务端故障。

02 · BLIND BOTS CASE

确认订单该用 PATCH status 吗

问题现场

客户端可 PATCH {status:"SHIPPED"},绕过库存、权限和物流校验。

  1. 01

    普通字段仍用 PATCH /orders/:id。

  2. 02

    确认与取消建 POST /orders/:id/confirm、/cancel 命令。

  3. 03

    命令由领域服务验证合法迁移。

得到什么

API 契约表达业务意图,敏感状态不再是任意字段。

03 · PRACTICE

马上动手

  1. 为 Quote 转 Order 设计路径、请求与响应。
  2. 区分 400、401、403、404、409、422。
04 · PITFALLS

常见坑

  • 接口全是 POST /doSomething
  • 错误都返回 200
  • 数据库字段直接暴露成公共 API
05 · KNOWLEDGE CHECK什么时候业务命令比通用 PATCH 更清晰?查看答案⌄
答案

当动作有专门权限、前置条件、副作用或审计语义时,例如 approve、cancel、ship;命令接口能显式承载这些规则。