RESTful API 设计:3 个原则让接口从 “能用” 变 “好用”

4 阅读3分钟

 做项目时发现,很多接口用着费劲:前端要反复适配不同格式的响应、迭代后旧版本直接崩溃、URL 命名混乱看不懂 —— 其实都是没遵循 RESTful 设计规范。分享 3 个核心原则 + 5 个实战避坑技巧,新手也能设计出行业认可的 “好用接口”(面试官常问,建议收藏)。​

一、3 个核心原则(必遵守)​

  1. URL 里别加动词!RESTful 的核心是 “资源导向”,URL 只描述 “资源是什么”,用 HTTP 方法(GET/POST/PUT/DELETE)描述 “做什么”。比如:​

❌ 错误:/api/getUser(GET 本身就是查询,重复了)、/api/deleteUser/123(DELETE 方法已说明动作)​

✅ 正确:查询用户用 GET /api/users/{id}、创建用户用 POST /api/users、更新用户用 PUT /api/users/{id}、删除用户用 DELETE /api/users/{id}​

  1. 响应格式必须统一!不管成功还是失败,返回结构保持一致,前端不用反复写适配逻辑。标准格式:​

    {"code": 状态码(200=成功,4xx=客户端错,5xx=服务端错),"message": 描述信息(成功写"success",失败写具体原因,比如"手机号格式错误","data": 业务数据(成功返回结果,失败返回null,"timestamp": 时间戳(便于排查问题),"requestId": 请求ID(分布式系统排查问题的关键)​
    }
    

反面例子:成功返回 {“name”:“张三”},失败返回 {“error”:“参数错”},前端要写两套解析逻辑,极易出错。​

  1. 版本控制不能少!接口迭代时必须区分版本,避免旧版本用户报错。比如:/api/v1/users(V1 版本)、/api/v2/users(V2 版本),两者并行运行,等所有用户迁移到 V2 后,再逐步下线 V1。​

二、5 个实战避坑技巧​

  1. 资源命名用复数!比如 “用户” 用 users,“订单” 用 orders,而不是 user/order,符合 RESTful 惯例,也便于扩展(比如查询多个用户)。​
  1. 过滤条件用查询参数!比如查询 “北京的已完成订单”,别写 /api/orders/beijing/completed,而是用 /api/v1/orders?city=beijing&status=completed,灵活且易维护。​
  1. 避免深层嵌套 URL!比如查询 “用户 123 的订单 456 的详情”,别写 /api/v1/users/123/orders/456/detail,而是用 /api/v1/orders/456?userId=123,层级太深会导致 URL 冗长,且不易扩展。​
  1. 响应数据按需返回!默认返回精简字段,允许前端用 fields 参数指定需要的字段,比如 /api/v1/users/123?fields=id,name,phone,减少数据传输量。​
  1. 明确 HTTP 方法的语义!GET(查询)、POST(创建)、PUT(全量更新)、PATCH(部分更新)、DELETE(删除),别混用(比如用 GET 方法修改数据,会导致缓存问题)。​

举个完整正面例子:查询 id=123 的用户,请求是 GET /api/v1/users/123,响应是:​

{
  "code": 200,
  "message": "success",
  "data": {"id": 123, "name": "张三", "phone": "138****5678"},
  "timestamp": 1620000000000,
  "requestId": "req-20240520101000001"
}