第27天 #100DaysOfCode — REST API
发布: (2026年3月1日 GMT+8 08:06)
5 分钟阅读
原文: Dev.to
Source: Dev.to
什么是 REST API?
把 REST API 想象成餐厅里的服务员:
- 你(客户端/应用)点餐。
- 厨房(服务器/数据库)准备食物。
- 服务员(REST API)接受你的请求,送达并把结果返回给你。
你不会直接进厨房,只通过服务员——使用约定好的标准语言——进行交流。
那么 REST 是什么?
**REST(表述性状态转移)**是一套规则,允许两个应用通过互联网进行通信。客户端使用标准的 HTTP 方法 与服务器交互,以获取或修改数据。
REST API 中的核心 HTTP 方法
| 方法 | 用途 |
|---|---|
| GET | 获取数据 |
| POST | 创建新数据 |
| PUT | 完全替换已有资源 |
| PATCH | 更新已有资源的部分内容 |
| DELETE | 删除资源 |
REST API 的真实案例
当你的天气应用加载时,可能会发送如下请求:
GET https://api.weather.com/city=karachi
服务器会返回 JSON 数据:
{
"city": "Karachi",
"temperature": "31°C",
"condition": "Sunny"
}
你的应用显示天气——这全靠 API 实现。
REST 中的“资源”是什么?
资源是 API 处理的任何数据片段。
示例
- 用户
- 帖子
- 商品
- 订单
每个资源都有唯一的 URL(称为 端点):
/users
/posts
/products
RESTful 路由命名规则
REST 关注 名词,而不是动词。
正确的 RESTful 路由
获取所有用户
GET /users
创建用户
POST /users
获取单个用户
GET /users/:id
更新用户
PUT /users/:id
PATCH /users/:id
删除用户
DELETE /users/:id
错误的路由命名(不要这样写)
POST /createUser
GET /getAllUsers
DELETE /deleteUser
这些 URL 中使用了 动词,违背了 REST 约定。
REST API 中的查询参数
查询参数用于过滤、搜索或自定义结果。
GET /users?role=admin
GET /products?limit=10&page=2
GET /posts?sort=latest
请求与响应结构
请求
- params – URL 中的值(例如
/users/:id) - query – 过滤/分页(例如
?page=2) - body – POST/PUT/PATCH 请求携带的数据
- headers – 元数据(身份令牌、content‑type 等)
响应
- status code(状态码)
- JSON body(JSON 内容)
- headers(响应头)
- 可选的元数据(分页信息、时间戳等)
常见的 REST API 状态码
成功
- 200 OK – 请求成功
- 201 Created – 已创建新资源
- 204 No Content – 成功但无响应体
客户端错误
- 400 Bad Request – 输入无效
- 401 Unauthorized – 需要身份验证
- 403 Forbidden – 已认证但无权限
- 404 Not Found – 资源不存在
服务器错误
- 500 Internal Server Error – 服务器内部出错
REST 中的幂等性
“幂等”指多次发送相同请求会得到相同结果。
| 方法 | 是否幂等? | 原因 |
|---|---|---|
| GET | ✔️ 是 | 获取数据不改变任何状态 |
| PUT | ✔️ 是 | 每次都用相同数据替换资源 |
| DELETE | ✔️ 是 | 再次删除状态不变 |
| PATCH | ⚠️ 有时 | 取决于后端如何处理部分更新 |
| POST | ❌ 否 | 创建新资源会产生重复 |
最后总结
REST API 是你应用与服务器之间的信使。它让你能够使用标准的 HTTP 方法创建、读取、更新和删除数据。如果你已经了解:
- 资源
- 路由
- 动词(GET、POST、PUT、DELETE)
- 查询参数
- 状态码
- 幂等性
……那么你已经掌握了 REST API 的核心概念。
祝编码愉快!