4.4 API 与 HTTP 基础 🟢 转载

来源:https://github.com/datawhalechina/vibe-vibe

阅读完本节后,你将会收获:

  • 理解 API 的概念和作用
  • 掌握 HTTP 协议的基本原理
  • 学会理解 HTTP 请求和响应的结构
  • 掌握常见 HTTP 状态码的含义
  • 了解前后端交互的基本流程

HTTP 协议是前后端交互的"语言",理解它的工作原理能让你更快定位问题。

什么是 API

API(Application Programming Interface,应用程序接口) 是不同软件之间通信的约定。

在 Web 开发中,API 通常指 Web APIHTTP API,即通过 HTTP 协议进行通信的接口。前端通过调用后端的 API 来获取数据或提交操作。

💡 API 就像函数

还记得上一节讲的函数吗?API 本质上就是远程的函数

  • 函数:定义在代码里,接收参数,返回结果
  • API:定义在服务器上,接收 HTTP 请求(参数),返回 HTTP 响应(结果)

调用 API 就像调用函数:

  • 函数调用:calculatePrice(100, 2) → 返回 200
  • API 调用:GET /api/price?unit=100&quantity=2 → 返回 { "total": 200 }

两者的区别只在于:函数运行在本地,API 运行在远程服务器上。

💡 API 的餐厅类比

把 API 想象成餐厅的菜单:

  • 前端是顾客
  • 后端是厨房
  • API 是菜单——告诉顾客可以点什么菜,每道菜叫什么名字
  • HTTP 请求是服务员——把顾客的订单送到厨房,再把菜品端回来

HTTP 请求的组成

一个完整的 HTTP 请求包含四个核心部分:

请求方法(Method)

告诉服务器你想做什么类型的事情:

方法 作用 示例
GET 读取数据 获取文章列表
POST 创建数据 提交注册表单
PUT/PATCH 修改数据 更新个人资料
DELETE 删除数据 删除一篇文章

URL(路径)

指定要操作的资源地址:

https://api.example.com/users/123
│       │                │      │
│       │                │      └── 用户 ID
│       │                └── 资源路径
│       └── 域名
└── 协议

Headers(头信息)

携带元数据,如身份认证、数据格式:

常见 Header 说明
Authorization 身份认证令牌
Content-Type 请求体的数据格式
Accept 期望响应的数据格式

Body(主体)

实际发送的数据内容,通常使用 JSON 格式:

{
  "title": "文章标题",
  "content": "文章内容"
}

完整示例:修改用户昵称

以下是一个完整的 HTTP 请求和响应示例:

请求:

PATCH /api/users/123 HTTP/1.1
Host: api.example.com
Authorization: Bearer your_token_here
Content-Type: application/json

{
  "nickname": "新昵称"
}

响应:

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

{
  "id": "123",
  "nickname": "新昵称",
  "updatedAt": "2025-01-28T10:00:00Z"
}

JSON 数据格式

JSON(JavaScript Object Notation)是 Web API 最常用的数据格式。

JSON 的特点

  • 使用大括号 {} 表示对象
  • 使用方括号 [] 表示数组
  • 数据以"键: 值"的方式组织
  • 键必须用双引号包裹

示例

{
  "users": [
    {
      "id": "1",
      "name": "张三",
      "email": "zhang@example.com"
    },
    {
      "id": "2",
      "name": "李四",
      "email": "li@example.com"
    }
  ],
  "total": 2,
  "page": 1
}
💡 JSON 是通用语言

JSON 是不同编程语言之间的"普通话"。Python、JavaScript、Java、Go 等语言都能轻松解析和生成 JSON,这使得它成为 Web API 的标准数据格式。

常见问题

Q1: 需要记住所有 HTTP 状态码吗?

不需要。记住最常见的几个(200、401、404、500)就够用了,其他的可以查。

Q2: GET 和 POST 的区别是什么?

GET 用于读取数据,参数通常放在 URL 中;POST 用于创建数据,参数放在 Body 中。GET 可以被缓存,POST 不行。

Q3: 如何测试 API?

可以用以下工具:

  • 浏览器开发者工具(Network 面板)
  • Postman 或 Insomnia 等 API 测试工具
  • 命令行工具 curl
  • 让 AI 写测试代码

image-20260227000559422

Q4: HTTPS 和 HTTP 的区别是什么?

HTTPS 是加密的 HTTP,数据在传输过程中被加密,更安全。现代网站都应该使用 HTTPS。

相关内容

最后编辑:Alex 2026-03-05 11:39:51