RESTful API 设计:最佳实践、架构和真实案例的完整指南(2026)

发布: (2026年3月18日 GMT+8 06:19)
7 分钟阅读
原文: Dev.to

Source: Dev.to

介绍

现代软件系统在连接 Web 应用、移动应用和后端服务时,极度依赖 API。在众多 API 架构中,RESTful API 仍是构建可扩展后端系统最广泛使用的标准。

如果你使用 Node.js、Python、Java 或任何现代框架来构建后端服务,了解 REST API 设计原则和最佳实践对于创建可维护且可扩展的应用至关重要。

您将学到

  • 什么是 RESTful API
  • REST 架构原则
  • REST API 设计的最佳实践
  • 真实案例 API 示例
  • HTTP 方法与状态码
  • API 版本控制与分页
  • 安全性与身份验证

通过本指南,您将了解如何设计像 Stripe、GitHub 和 Shopify 那样的可投入生产的 REST API。

Source:

RESTful API 基础

RESTful API(表述性状态转移 API)是一种 Web 服务架构,使用标准的 HTTP 协议实现客户端与服务器之间的通信。

  • 起源 – 由 Roy Fielding 于 2000 年在其博士论文中提出。
  • 核心思想 – 通过 URL 暴露资源,客户端使用 HTTP 方法对资源进行操作。

常用 HTTP 方法

方法用途
GET检索资源
POST创建新资源
PUT替换资源
PATCH部分更新资源
DELETE删除资源

示例端点

GET    /users
POST   /users
GET    /users/123
PATCH  /users/123
DELETE /users/123

每个端点代表一个 资源;HTTP 方法决定了所执行的操作。

为什么 REST 成为行业标准

  • 使用标准的 HTTP 协议 → 易于实现和理解。
  • 无状态 架构 → 在多台服务器上实现水平扩展。
  • 可被以下对象消费:
    • Web 应用程序
    • 移动应用
    • 微服务
    • 物联网设备

可托管 REST API 的语言和运行时

  • Node.js
  • Java
  • Python
  • Go
  • Ruby
  • PHP

架构约束

  1. 客户端‑服务器分离

    • 客户端:UI,用户交互。
    • 服务器:业务逻辑,数据库操作,身份验证。
  2. 无状态性 – 每个请求必须包含处理所需的全部信息。

    GET /orders
    Authorization: Bearer <token>
  3. 面向资源的 URL – 使用名词,而非动词。

    错误示例/createUser/updateOrder
    正确示例POST /usersPATCH /orders/:idDELETE /products/:id

HTTP 状态码

Code含义
200成功(OK)
201资源已创建
204无内容
400错误请求
401未授权
403禁止
404未找到
500服务器错误

示例响应

HTTP/1.1 200 OK
Content-Type: application/json

{
  "success": true,
  "data": {
    "id": "123",
    "name": "Pulkit Singh"
  }
}

设计博客平台 API

帖子 API

方法端点
GET/api/v1/posts
GET/api/v1/posts/:id
POST/api/v1/posts
PATCH/api/v1/posts/:id
DELETE/api/v1/posts/:id

评论 API

方法端点
GET/api/v1/posts/:postId/comments
POST/api/v1/posts/:postId/comments

用户 API

方法端点
GET/api/v1/users
POST/api/v1/users
GET/api/v1/users/:id

查询参数:过滤、排序和分页

  • 分页GET /products?page=2&limit=20
  • 排序GET /products?sort=price
  • 过滤GET /products?category=electronics

典型的分页响应

{
  "data": [ /* array of items */ ],
  "pagination": {
    "page": 2,
    "limit": 20,
    "total": 200
  }
}

分页对于大数据集的性能至关重要。

API 版本控制

  • 防止破坏现有客户端。

  • 推荐的 URL 格式:

    /api/v1/users
    /api/v2/users

好处

  • 向后兼容
  • 安全的功能升级
  • 更易维护

一致的响应结构

  • 成功

    {
      "success": true,
      "message": "Users fetched successfully",
      "data": [ /* … */ ]
    }
  • 错误

    {
      "success": false,
      "error": "User not found"
    }

安全与身份验证

  • 常用方法: Authorization: Bearer <token>(Google、GitHub 以及许多 SaaS API 使用)。
  • 最佳实践
    • 验证所有输入
    • 实施速率限制
    • 强制使用 HTTPS
    • 清理请求数据

示例 Express 路由

router.get("/users", getUsers);
router.get("/users/:id", getUser);
router.post("/users", createUser);
router.patch("/users/:id", updateUser);
router.delete("/users/:id", deleteUser);

示例控制器

export const getUsers = async (req, res) => {
  const users = await User.find();

  res.json({
    success: true,
    data: users
  });
};

检查清单:设计可扩展的 REST API

  • ✅ 在 URL 中使用名词
  • ✅ 正确使用 HTTP 方法
  • ✅ 返回适当的状态码
  • ✅ 实现分页
  • ✅ 为 API 进行版本管理
  • ✅ 保持响应结构一致
  • ✅ 使用身份验证保护端点
  • ✅ 验证请求负载
  • ✅ 使用 Swagger/OpenAPI 编写文档
  • ✅ 实施速率限制

常见需避免的陷阱

陷阱为何会成为问题
在端点 URL 中使用动词违反 REST 规范,使 URL 难以阅读
忽视正确的 HTTP 状态码客户端无法可靠地解释响应
响应格式不一致增加客户端解析的复杂度
未提供分页导致性能瓶颈
缺乏版本控制迫使现有使用者面对破坏性更改
缺少身份验证/校验导致安全漏洞

嵌套资源

解决这些问题可确保您的 API 可维护且可扩展。

RESTful API 仍然是现代 Web 应用的支柱。通过遵循 REST 架构原则、使用正确的 HTTP 方法、实现分页以及保持一致的响应,开发者可以构建高效可扩展的 API,并提供出色的开发者体验。

无论您是在构建初创产品、SaaS 平台,还是微服务架构,掌握 REST API 设计都将显著提升您的后端开发技能。

如果您遵循本指南中描述的实践,您的 API 将保持简洁、可扩展、安全,并且易于全球开发者集成。

0 浏览
Back to Blog

相关文章

阅读更多 »