第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 的核心概念。

祝编码愉快!

0 浏览
Back to Blog

相关文章

阅读更多 »

‘skill-check’ JS 测验

问题 1:类型强制转换 以下代码在控制台会输出什么? javascript console.log0 == '0'; console.log0 === '0'; 答案:true,然后 false Ex...

不糟糕的语义失效

缓存问题 如果你在 Web 应用上工作了一段时间,你就会了解缓存的情况。你加入缓存,一切都变快了,然后有人……