REST API 基础概念

RESTful API 的核心概念:HTTP 方法、请求/响应结构、端点、状态码

生产方式:人写签发:晓黎学习复核:2026年9月19日被 6 个词条引用

什么是 REST API?

REST(Representational State Transfer)是一种设计风格,不是协议或标准。简单说就是:用 HTTP 协议的方式,让程序之间互相通信。

你每天都在用 REST API——刷朋友圈、查天气、叫外卖,背后都是 REST API 在工作。

核心概念

1. 客户端与服务器

┌─────────────┐         ┌─────────────┐
│   你的 App   │  ────→  │   服务器     │
│  (客户端)   │  ←────  │  (服务端)   │
└─────────────┘         └─────────────┘
  • 客户端:发起请求的一方(浏览器、手机 App、脚本)
  • 服务器:接收请求并返回数据的一方

2. 端点(Endpoint)

端点就是服务器上的一个具体地址,用来执行某个特定操作。

https://api.example.com/v1/chat/completions
                  └──┬──┘ └─┬─┘ └──┬──────────┘
                     │      │      └─ 具体功能路径
                     │      └─ API 版本
                     └─ 域名

类比:端点就像餐厅里的菜单上的某一道菜。你不需要进厨房看厨师怎么做,只需要说出菜名(端点),服务员(API)就会把菜端给你。

3. HTTP 方法(动词)

最常见的四个方法:

方法含义类比
GET获取数据去图书馆借书(不改变书架上的书)
POST创建新数据去邮局寄信(新增了一封信)
PUT更新已有数据去柜台改签(替换原有的票)
DELETE删除数据去银行销户(彻底删掉账户)

AI API 主要用 POST——你每次跟 AI 对话都是一次「提问」,需要发送数据给服务器。

4. 请求结构

一个完整的 HTTP 请求 = 地址 + 方法 + 请求头 + 请求体

POST /v1/messages HTTP/1.1          ← 方法 + 路径
Host: api.anthropic.com              ← 请求头:发给谁
Content-Type: application/json       ← 请求头:数据格式
Authorization: Bearer sk-ant-...     ← 请求头:身份验证

{
  "model": "claude-sonnet-4-5",      ← 请求体(JSON)
  "messages": [...]
}

通俗比喻:你去餐厅吃饭

  • 地址 = 餐厅地址
  • 方法 = 你进店后说的第一句话("帮我点个菜")
  • 请求头 = 你的身份信息(会员卡号)、口味偏好(要辣的)
  • 请求体 = 你点的具体菜品(菜单内容)

5. 响应结构

服务器返回的数据也是结构化的:

HTTP/1.1 200 OK                     ← 状态码:成功了
Content-Type: application/json       ← 响应头

{
  "id": "msg_01A...",
  "content": [...],                  ← 响应体(JSON):实际数据
  "model": "claude-sonnet-4-5"
}

状态码速查:

状态码含义类比
200成功✅ 菜做好了,上菜
400请求参数有问题❌ 你点的菜菜单上没有
401没登录/Token 过期❌ 你忘了带会员卡
429请求太频繁❌ 你一分钟内下了十单,被系统限流了
500服务器内部错误❌ 厨房着火了,菜做不出来

6. JSON 格式

API 通信几乎都用 JSON(JavaScript Object Notation),是一种纯文本的数据格式。

{
  "name": "张三",
  "age": 25,
  "skills": ["Python", "React"],
  "contact": {
    "email": "zhangsan@example.com",
    "phone": "13800138000"
  }
}

特点:

  • 大括号 {} = 对象(类似字典/Map)
  • 中括号 [] = 数组(类似列表)
  • 双引号 = 字符串的标记
  • 逗号 = 分隔不同字段

详细信息参见 JSON 数据结构基础

为什么 AI API 都用 REST?

  1. 简单:HTTP 协议被所有编程语言支持
  2. 灵活:JSON 格式易读易写,人类可读
  3. 生态成熟:有无数工具(Postman、curl、各类 SDK)帮你测试
  4. 标准化:只要懂 REST,就能接入任何兼容的服务

常见误区

误区纠正
REST = HTTP❌ REST 是设计风格,HTTP 是实现方式
API 就是后端❌ API 是前后端之间的契约/接口
用 GET 还是 POST 无所谓❌ GET 应该只读,POST 才改变数据
JSON 就是 JavaScript❌ JSON 是独立的数据格式,所有语言都能解析

实战检查清单

调用一个 AI API 时,你需要确认:

  • 端点 URL 正确:/v1/messages 还是 /v1/chat/completions
  • HTTP 方法正确:AI API 通常用 POST
  • 请求头完整:特别是 Content-Type 和 Authorization
  • 请求体格式正确:字段名、嵌套结构是否符合文档
  • 能正确解析响应:知道数据在哪个字段(如 content、choices[0].message)

互链

链接来自概念卡正文里的双链,编译时能解到本期词条集的才成为站内链接。

反链(6)

出现在哪些课时里(0)

判据与「课时正文里能不能点出来」是同一个:那一节确实提到了它。点课时走当前页跳转, 它是导航,不是词条链接。

还没有课时讲到这一条。它是词条跑在课程前面的那一部分,不是错链。

关联图

只画这一条与它直接相连的词条,边与上面两区同源。可拖拽、可缩放,点节点是新标签。

出处

路径是本地知识库(Obsidian 库)里的位置,正文与概念卡逐字对应。

  • 概念卡原文REST API 基础概念03_RESOURCES/概念/rest-api-基础概念.md
  • 所属知识地图栏目概念页索引 · API 与后端基础03_RESOURCES/概念/Index.md

编译入库:2026年11月2日。词条由知识库编译而来, 修正要回到概念卡改,再重新编译。