3.4 API与HTTP基础
Tip
理解HTTP协议和API的基本概念,学会用正确的方式指挥AI写联网功能。
1. 为什么要学这个?
当你问AI怎么联网获取数据时,它会甩给你一堆词:"GET请求、POST请求、Header、Status 200、JSON Body..."
如果你不懂这些,你就没法指挥AI写联网功能。你可能会写出"用浏览器去数据库里拿数据"这种让AI死机的指令。
想象你在餐厅点餐。
- 错误方式:冲进厨房大喊"我要吃的!",厨师一脸懵逼。
- 正确方式:填张点餐单,写清楚"3号桌,宫保鸡丁,少辣",服务员拿给厨房,厨房做好后端出来。
关键问题:
- HTTP协议是什么?
- GET、POST、PUT、DELETE分别是什么?
- 状态码200、404、500是什么意思?
- JSON是什么格式?
HTTP就是互联网的点餐规则。
2. 核心概念
2.1 HTTP - 超文本传输协议
技术定义:HTTP(HyperText Transfer Protocol)是客户端和服务器之间通信的协议,定义了请求和响应的格式。
就像点餐单的格式。
- 作用:规定怎么点餐(Request)和怎么上菜(Response)
- 组成:URL(地址)、Method(动作)、Headers(备注)、Body(内容)
2.2 Request - 请求
技术定义:Request是客户端发给服务器的消息,包含要执行的操作和相关数据。
就像点餐单。
POST /api/login HTTP/1.1
Host: example.com
Content-Type: application/json
Authorization: Bearer token123
{
"email": "user@example.com",
"password": "123456"
}
四要素:
- URL:去哪个窗口?(
/api/login) - Method:干什么?(
POST) - Headers:附加信息(权限、格式)
- Body:具体内容(登录信息)
2.3 HTTP Methods - 请求方法
| 方法 | 作用 | 类比 |
|---|---|---|
| GET | 获取数据 | 看菜单 |
| POST | 创建数据 | 点新菜 |
| PUT/PATCH | 修改数据 | 改菜 |
| DELETE | 删除数据 | 退菜 |
2.4 Response - 响应
技术定义:Response是服务器返回给客户端的消息,包含状态码和数据。
就像上菜回执。
HTTP/1.1 200 OK
Content-Type: application/json
{
"token": "abc123",
"user": {
"id": 1,
"name": "Vibe"
}
}
2.5 Status Code - 状态码
| 状态码 | 含义 | 类比 |
|---|---|---|
| 200 OK | 成功 | 上菜了 |
| 400 Bad Request | 客户端参数错误 | 你点的是啥?没这菜 |
| 401 Unauthorized | 未授权 | 你没付钱/没登录 |
| 404 Not Found | 找不到资源 | 厨师跑路了 |
| 500 Internal Server Error | 服务器内部错误 | 厨房炸了 |
3. JSON数据格式
技术定义:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。
就像标准化的菜单。
{
"menu": "Kung Pao Chicken",
"price": 20,
"isSpicy": true,
"tags": ["chicken", "peanuts"]
}
为什么用JSON?
- 最轻量,比XML简洁
- 有结构,比纯文本清晰
- AI最爱,能精确理解每个字段
4. 怎么指挥AI写API?
❌ 普通指令:
"帮我写个登录接口"
✅ Vibe指令:
帮我写一个Next.js的API Route:
- Path: /api/login
- Method: POST
- Request Body: { email, password }
- Response (200): { token: "abc...", user: { id: 1, name: "Vibe" } }
- Response (401): { error: "密码错误" }
你定义得越清楚(URL、Method、JSON),AI写出的代码就越少Bug。
5. 避坑指南
| ❌ 不要这样做 | ✅ 应该这样做 | 为什么 |
|---|---|---|
| 全用GET请求 | 查=GET,增=POST,改=PUT,删=DELETE | 语义化,符合HTTP规范 |
| 状态码全回200 | 错了就回4xx或5xx | 让前端知道出错了 |
| 把Token放URL里 | 放Header里(Authorization: Bearer ...) |
避免泄露到浏览器历史记录 |
| 不写API文档 | 写清楚每个接口的参数和返回值 | 方便团队协作和AI理解 |
6. 真实案例
Story
2010年,Stripe用7行代码颠覆支付行业
2010年以前,网站接入信用卡支付需要填几百页银行表格,等几周审核,然后接入复杂的SOAP XML协议。爱尔兰Collison兄弟创建了Stripe,只给开发者提供7行代码:发一个简单的POST /charge请求,带上金额和卡号,支付就成功了。全世界开发者疯了,所有新创公司(Uber、Airbnb、Lyft)都首选Stripe。如今Stripe估值650亿美元(曾达950亿)。
Vibe心法:设计API时遵循HTTP规范——用对Method(GET/POST/PUT/DELETE),用对状态码(200/400/500),用JSON格式。
7. 本章小结
- 📝 HTTP是点餐规则:Request(点单)→Response(上菜)
- 🔧 四种Method:GET(查)、POST(增)、PUT(改)、DELETE(删)
- 📊 状态码:200成功、400客户端错、404找不到、500服务器错
- 📄 JSON是通用语:轻量、有结构、AI友好
- 🎯 指挥AI:写清楚URL、Method、Request Body、Response格式