标准答案

  1. 路径优先使用复数名词和业务稳定的资源名,例如 /orders、/users/{userId}/addresses,避免把实现细节和数据库表名直接暴露出来。
  2. GET 用于读取,POST 用于在集合下创建或提交命令,PUT/PATCH 用于更新,DELETE 用于删除或撤销;方法和响应语义要保持一致。
  3. 嵌套路径只表达明确的归属关系。层级过深会让路由、权限和查询边界难以维护,应在资源可独立定位时使用顶层资源加筛选条件。
  4. 支付、发布、归档等状态转换可以设计为资源状态更新,或在确有命令语义时使用 /orders/{id}:cancel 这类受约束动作。
  5. 命名、分页、筛选、错误结构和版本策略应作为同一套接口约定维护,避免每个服务自行发明格式。

题目解析

REST 的价值是让调用方能从 URL、方法和状态码推断行为,而不是要求所有业务都硬套 CRUD。

接口一旦被多端、第三方或 SDK 使用,随意改路径和字段的成本很高;命名要优先选择业务语义稳定的概念。

常见误区

  • 把所有操作都设计成 /getUser、/createOrder、/deleteOrder 这类动词路径。
  • 为了表达关系无限嵌套路径,导致资源难以独立查询和授权。
  • 把内部表结构、字段缩写和技术实现直接作为公开 API 名称。

作者信息