restful api介绍

7 阅读4分钟

下面介绍一个非常系统、专业又通俗易懂的 Restful API 讲解,涵盖:定义、设计原则、应用场景、最佳实践、示例,非常适合软件工程师巩固理解。


🌐 一、Restful API 是什么?(定义)

REST(Representational State Transfer) 是一种 Web 服务的架构风格。它不是协议,不是标准,而是设计 API 的一套指导规范。

Restful API = 按照 REST 架构风格设计的 API。

简化理解:
➡️ Restful API 就是“用 URL 来表达资源,用 HTTP 方法来表达操作”的接口设计方式。


🧩 二、核心思想(REST 六大原则)

REST 有 6 个核心约束,常用的 4 个是:

1. 统一接口(Uniform Interface)最重要

  • URL → 表达资源
    /users/123 表示用户资源 ID 为 123

  • HTTP 动词表达操作

    • GET → 查询资源
    • POST → 新建资源
    • PUT → 完整更新资源
    • PATCH → 局部更新资源
    • DELETE → 删除资源

2. 无状态(Stateless)

服务端不保存客户端状态(session)。
所有请求必须携带必要信息,比如 token。

3. 客户端—服务器分离(Client-Server Separation)

前后端分离:前端负责 UI,后端提供资源。

4. 可缓存(Cacheable)

响应声明是否可缓存,提升性能。


🛠️ 三、如何设计一个典型的 RESTful API?

1. 资源名使用名词,使用复数

/users
/orders
/products

2. 使用层级关系表达资源结构

/users/1/orders
/users/1/orders/3

3. 使用 HTTP 方法定义动作

HTTP 方法动作
GET查询资源
POST创建资源
PUT更新整个资源
PATCH更新部分资源
DELETE删除资源

📘 四、典型 RESTful API 示例(以用户资源为例)

1. 获取用户列表

GET /users

2. 创建新用户

POST /users
Body:
{
  "name": "Alice",
  "email": "alice@example.com"
}

3. 获取指定用户

GET /users/123

4. 更新用户

完整更新:

PUT /users/123

局部更新:

PATCH /users/123

5. 删除用户

DELETE /users/123

🚀 五、Restful API 的优势

✔ 清晰可读

URL 语义明确:一看就知道是操作什么资源。

✔ 前后端分离

天然适配 Web、App、JS 的生态。

✔ 可拓展性强

资源管理结构化,适合大型系统。

✔ 对接方便

各种语言都易于对接 REST。


📌 六、在实际项目中的典型应用场景

场景描述
Web 后端服务前端 SPA + 后端 API
移动 App 后端Android/iOS 调 API
第三方开放平台如微信开放接口、GitHub API
微服务内部通信服务之间 REST 调用

💡 七、REST vs RPC vs GraphQL(工程师常见困惑)

特点RESTRPCGraphQL
语义资源方法调用查询语言
灵活性中等很高
数据返回固定固定客户端可定制
适合场景标准 CRUD强方法语义复杂查询的前端

Restful 适合:业务以资源为核心、多端访问、CRUD多的系统。
例如:电商、OA、CRM、后台管理系统。


📏 八、Restful API 设计最佳实践(高级工程师常问的)

1. URL 不包含动词

/getUserInfo
/users/123

2. 返回标准化结构(推荐)

{
  "code": 0,
  "data": {...},
  "message": "success",
  "traceId": "xxx"
}

3. 使用 HTTP 状态码表达业务结果

状态码含义
200OK
201Created(创建成功)
400参数错误
401未授权
404资源不存在
500系统错误

4. 分页参数规范

GET /users?page=1&size=20

5. 过滤和排序参数规范

GET /users?status=active&sort=createdAt&order=desc

6. 避免深层级 URL

/shops/1/products/2/comments/3/tags (❌)

一般控制在 2 层以内。


🎯 九、Restful API 什么时候“不推荐使用”?

不适合 REST 的情况原因
强方法语义(如计算、转账)用动词更合理
批量操作复杂REST 难表达
需要一次请求获取多资源REST 需要多次请求
服务间调用频繁RPC 更高效

例如:

POST /payments/transfer

这种“动作型”的接口其实是为了业务落地,不一定严格 REST。


🏁 十、总结

Restful API 的核心是:

用 URL 表示资源,用 HTTP 动词表示操作,接口无状态、清晰、可缓存、可扩展。

它是现代 Web/移动后端的基础,也是你在 Java/Golang 服务开发面试中必问的知识点。