第八章:Vibecoding 实战三:按后端思路排查接口报错

vibecoding入门教程

浏览 358 次


这一章把重点从“页面能不能看”推进到“接口为什么出错”。

对小白来说,后端报错最常见的感受就是:看不懂状态码,看不懂返回值,也不知道该把哪些信息给 AI 编程助手。

学完这一章,你应该能做到:

  • 把接口报错说给 AI 编程助手听;
  • 让 AI 编程助手按排查顺序分析问题;
  • 学会收集状态码、请求地址、返回体、日志这些关键信息;
  • 不再只丢一句“接口报错了”。

如果还没有打开可用的 AI 编程工具,先按第一章从官网安装并完成第一个练习,再继续这一章。

本章可直接复制的提示词

你要做的事:接口报错了,不知道该发什么给 AI。

【可直接复制给 AI】

接口报错了,我是编程小白。
这是我看到的信息:
状态码:(填写 401/403/404/429/500 等)
请求地址:(粘贴 URL)
报错内容:(粘贴完整报错)

请不要直接改代码。
请告诉我:
1. 这个状态码通常是什么意思;
2. 最可能的 3 个原因;
3. 我下一步应该复制哪些信息给你;
4. 哪些文件或配置不要随便改。

【说明】

  • AI 会解释状态码;
  • 告诉你最可能的问题方向;
  • 告诉你下一步要补充哪些日志或截图。

不满意继续这样问:

请按最可能到最不可能排序。
只告诉我第一步应该检查什么,不要列太多理论。

8.1 接口报错,不要只把状态码丢给 AI 编程工具

前端页面坏了,至少你还能看见按钮歪了、页面乱了、文字溢出了。

但 API 报错不一样。

它经常只给你一个冷冰冰的状态码:

401 Unauthorized
403 Forbidden
404 Not Found
429 Too Many Requests
500 Internal Server Error

新手看到这些状态码,经常会直接问:

接口 401 了,怎么修?

或者:

接口 500,帮我修。

这类问题太短,AI 编程工具很容易猜。

因为同样是 401,原因可能完全不同:

没有传 API Key
API Key 写错
Bearer 格式错了
Token 过期
服务端没读到环境变量
前端请求没有带 cookie
登录中间件拦截了
请求到了错误的环境

同样是 404,也可能是:

路径写错
路由文件位置错
请求方法错
base URL 错
本地服务没启动
接口部署到了另一个域名
动态路由参数缺失

所以第八章要教的不是“背状态码”,而是让 AI 编程工具按真实后端项目的方式排查。

这一章我们会用几个常见接口写法做案例:

Next.js Route Handler:最常见的前后端一体接口
Hono API:轻量后端和边缘函数项目常见
tRPC:类型安全接口项目常见
Auth.js / NextAuth:登录认证报错常见
AI Chatbot / API Gateway:模型接口、Key、Base URL 报错常见

本章的核心原则:

接口报错时,不要只给 AI 编程工具状态码,要同时给它请求、返回、路由文件、环境变量和服务端日志。

8.2 先做一个“API 报错诊断 Skill”

第六章我们做了“项目启动体检 Skill”。

第七章我们做了“落地页审美 Skill”。

第八章可以做一个新的 Skill:

api-error-doctor

中文叫:

API 报错诊断 Skill

它的作用是:

每次接口报错时,让 AI 编程工具先按固定顺序查证据,而不是直接猜原因。

API 报错诊断 Skill 示例

# API 报错诊断 Skill

当用户遇到接口请求失败、状态码错误、登录失败、模型 API 调用失败、前后端联调失败时,使用本 Skill。

## 目标

先根据请求、响应、日志、路由文件和环境变量定位问题,不要一上来修改代码。

## 必须收集的信息

1. 请求 URL
2. 请求方法:GET / POST / PUT / DELETE
3. 请求 Headers
4. 请求 Body
5. 响应状态码
6. 响应 Body
7. 浏览器 Network 面板错误
8. 服务端终端日志
9. 相关 API 路由文件
10. 环境变量配置方式

## 诊断顺序

1. 判断请求是否打到了正确域名和路径。
2. 判断请求方法是否正确。
3. 判断是否缺少 Header。
4. 判断是否缺少 Body 参数。
5. 判断是否缺少环境变量。
6. 判断是否被登录、权限、中间件拦截。
7. 判断是否是上游第三方 API 返回错误。
8. 判断是否是服务端代码抛异常。
9. 判断是否是前端解析返回值失败。
10. 最后才提出修改代码方案。

## 输出格式

- 状态码:
- 最可能原因:
- 当前证据:
- 还缺哪些信息:
- 应该查看的文件:
- 不应该先改的地方:
- 最小排查步骤:
- 可能的最小修复方案:

## 禁止事项

- 不要只根据状态码下结论。
- 不要编造 API Key。
- 不要暴露用户密钥。
- 不要修改支付、登录、权限代码,除非用户确认。
- 不要把 500 一律归因于服务端代码。
- 不要把 401 一律归因于 Key 错。
- 不要一上来重构接口。

不做 Skill,也可以直接复制这段提示词

请作为 API 报错诊断助手帮我排查接口问题。

要求:
1. 先不要修改任何文件
2. 不要只根据状态码下结论
3. 先收集请求 URL、方法、Headers、Body、响应状态码、响应内容、服务端日志
4. 判断请求是否打到正确路径
5. 判断是否缺少鉴权、参数、环境变量或上游服务配置
6. 给出最小排查步骤
7. 最后再判断是否需要改代码

输出格式:
- 状态码:
- 最可能原因:
- 当前证据:
- 还缺哪些信息:
- 应该查看的文件:
- 不应该先改的地方:
- 最小排查步骤:
- 可能的最小修复方案:

8.3 案例一:AI Chatbot 接口 500,不一定是代码炸了

第一个真实场景:

你 clone 了一个 AI Chatbot 模板。

页面能打开,输入消息后,聊天接口报错。

浏览器 Network 里看到:

POST /api/chat
500 Internal Server Error

终端里可能看到:

OPENAI_API_KEY is not set
Invalid API key
model not found
fetch failed
Cannot read properties of undefined

很多人第一反应是:

接口 500 了,帮我修代码。

但 AI Chatbot 的 500,不一定是代码 bug。

它可能是:

模型 API Key 没配
Base URL 不对
模型名不对
上游接口返回错误
请求 body 格式不对
流式响应处理失败
服务端环境变量没读到
本地 .env 没生效

推荐提示词

AI Chatbot 项目里,聊天接口 POST /api/chat 返回 500。

请先分析原因,不要修改任何文件。

下面是信息:

请求 URL:
{填入请求地址}

请求方法:
POST

请求 Body:
{填入请求体}

响应状态码:
500

响应内容:
{填入响应内容}

服务端日志:
{粘贴终端日志}

请你帮我判断:
1. 这是代码错误、环境变量错误,还是上游模型 API 错误
2. 是否缺少 API Key、Base URL 或模型名
3. 应该查看哪些文件
4. 是否需要检查 .env / .env.local
5. 最小排查步骤是什么
6. 暂时不要修改代码

AI 编程工具应该重点看哪些文件

AI Chatbot 类项目常见文件包括:

app/api/chat/route.ts
src/app/api/chat/route.ts
lib/ai/*
lib/openai/*
lib/models.ts
.env.example
.env.local
package.json

如果项目用了 AI SDK,可能还会有:

ai/providers.ts
lib/ai/models.ts
lib/ai/prompts.ts

最常见的错误:环境变量没生效

很多新手以为自己配好了:

OPENAI_API_KEY=

但这里是空的。

或者写成:

OPENAI_KEY=

而代码里读的是:

process.env.OPENAI_API_KEY

变量名不一致,服务端就读不到。

可以让 AI 编程工具这样查:

请搜索项目中所有 process.env 的使用位置。

重点检查:
1. 聊天接口需要哪些环境变量
2. .env.example 里是否列出了这些变量
3. .env.local 是否需要手动创建
4. 变量名是否一致
5. 哪些变量不能用空值

不要把密钥贴给 AI 编程工具

你可以贴变量名,但不要贴真实 Key。

正确写法:

我已经配置了 OPENAI_API_KEY,但不粘贴真实值。
请帮我判断代码读取的变量名是否正确。

不要这样:

这是我的 API Key:sk-xxxx,帮我看看对不对。

如果是模型名错误

比如响应里出现:

model not found
unsupported model
invalid model

不要让 AI 编程工具直接乱换模型。

提示词:

接口返回 model not found。

请先分析原因,不要修改代码。

请帮我检查:
1. 当前代码里模型名在哪里配置
2. 模型名是否来自环境变量
3. 是否可能是 provider 和 model 不匹配
4. 是否需要区分 OpenAI-compatible endpoint 和官方 endpoint
5. 请给出检查步骤,不要直接替换模型名

最小修复思路

如果只是环境变量缺失,可能不需要改代码。

你只需要:

创建 .env.local
填写正确变量
重启 dev server
重新请求接口

如果是接口代码没有处理错误,可以再让 AI 编程工具加一个更友好的错误返回。

但要先确认:

根因是配置问题,不是代码结构问题。

8.4 案例二:Next.js Route Handler 404,可能是路径或方法错了

第二个常见场景:

你写了一个接口,前端请求一直 404。

比如你请求:

/api/create

但接口文件可能是:

app/api/create/route.ts

或者:

pages/api/create.ts

不同接口写法,规则不一样。

新手最容易混淆:

App Router
Pages Router
Route Handler
API Route
动态路由
请求方法

所以 404 不一定是接口不存在,也可能是你请求方法错了。


推荐提示词

前端请求接口返回 404。

请先分析当前项目,不要修改文件。

请求信息:

URL:
{填入 URL}

方法:
{GET 或 POST}

响应内容:
{填入响应内容}

请帮我检查:
1. 项目使用 App Router 还是 Pages Router
2. 对应 API 路由文件应该放在哪里
3. 当前项目里是否存在对应 route.ts 或 api 文件
4. 请求方法是否和代码里的 GET / POST 导出一致
5. 是否存在动态路由参数缺失
6. 最小修复方案是什么

先只分析,不要修改。

AI 编程工具应该检查的文件

Next.js App Router 常见:

app/api/xxx/route.ts
src/app/api/xxx/route.ts

Pages Router 常见:

pages/api/xxx.ts
src/pages/api/xxx.ts

如果是动态路由:

app/api/users/[id]/route.ts
pages/api/users/[id].ts

请求方法也会导致问题

比如接口只写了:

export async function POST() {
  // ...
}

但前端用的是:

fetch('/api/create')

默认是 GET。

这就可能不对。

你可以让 AI 编程工具检查:

请对比前端 fetch 的请求方法和 route.ts 中导出的 GET / POST 方法是否一致。

最小修复提示词

请给出最小修复方案。

限制:
1. 不要重构接口目录
2. 不要同时兼容所有请求方法
3. 不要修改无关页面
4. 只修复当前请求和当前路由不匹配的问题
5. 修改前先说明要改哪个文件

翻车点

不要让 AI 编程工具看到 404 就新建接口。

错误提示词:

404 了,帮我新建一个接口。

更好的提示词:

先检查现有项目里是否已经有对应接口,不要重复创建。

8.5 案例三:Hono API 返回 400,先查验证器和请求 Body

第三个案例用 Hono 这类轻量 API 项目。

Hono 项目常见在:

Cloudflare Workers
Bun
Deno
Vercel Edge
轻量 API 服务
边缘函数
内部工具 API

这类项目很多会搭配:

Zod
Valibot
validator middleware
自定义 middleware

如果请求返回 400,不一定是接口坏了。

很可能是验证器拒绝了请求。


常见场景

你请求:

POST /api/users

Body 里传:

{
  "email": "test@example.com"
}

但后端要求:

{
  "email": "test@example.com",
  "name": "Tom"
}

少了 name,验证器返回 400。


推荐提示词

Hono API 返回 400。

请先分析当前项目,不要修改文件。

请求信息:

URL:
{填入 URL}

方法:
{填入方法}

请求 Body:
{填入 Body}

响应内容:
{填入响应}

请帮我判断:
1. 这是路由不存在,还是请求参数校验失败
2. 是否有 Zod / Valibot / validator middleware
3. 这个接口要求哪些字段
4. 当前请求缺少哪些字段
5. 是否是 Content-Type 不对
6. 最小修复方案是什么

先只分析,不要修改。

AI 编程工具应该看哪些文件

Hono 项目常见:

src/index.ts
src/routes/*
src/middleware/*
src/validators/*
src/schema/*
worker.ts

如果是 Cloudflare Workers:

wrangler.toml
src/index.ts

如果项目有 OpenAPI 生成:

openapi.ts
schema.ts
routes/*

Content-Type 也很常见

很多 API 要求:

Content-Type: application/json

但前端 fetch 忘了写。

错误写法:

fetch('/api/users', {
  method: 'POST',
  body: JSON.stringify(data)
})

更完整的写法:

fetch('/api/users', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})

你可以让 AI 编程工具对比前后端:

请对比前端 fetch 请求和 Hono 后端验证逻辑。

重点检查:
1. Content-Type
2. Body 字段
3. 字段类型
4. 必填字段
5. 返回错误格式

不要让 AI 编程工具放宽校验

新手看到 400,很容易让 AI 编程工具:

把校验去掉。

这很危险。

更好的说法:

请不要删除校验。请判断是前端请求应该补字段,还是后端错误提示应该更友好。

最小修复思路

400 的修复通常有两种:

第一种,前端传错了。

修前端请求 Body
补 Content-Type
补必填字段
修字段类型

第二种,后端错误提示不友好。

保留校验
返回更清楚的错误 message
告诉前端缺哪个字段

不要直接删验证器。


8.6 案例四:Auth.js 登录 401 / 403,先查 Secret、Cookie 和回调地址

登录接口是最容易把人搞崩的。

你点登录按钮,可能遇到:

401 Unauthorized
403 Forbidden
Callback URL mismatch
MissingSecret
Invalid provider
OAuthAccountNotLinked
CSRF token mismatch

这类问题不能只看前端。

它可能涉及:

环境变量
OAuth Provider 配置
回调地址
Cookie
中间件
Session
部署域名
本地 localhost

推荐提示词

Auth.js / NextAuth 登录失败,返回 401 或 403。

请先分析当前项目,不要修改文件。

我提供的信息:

登录方式:
{Google / GitHub / 邮箱 / Credentials}

错误状态码:
{401 / 403}

错误内容:
{粘贴错误}

当前环境:
{本地 / 预览环境 / 生产环境}

请帮我判断:
1. 是否缺少 AUTH_SECRET 或 NEXTAUTH_SECRET
2. 是否是回调地址配置错误
3. 是否是 Cookie / Session 问题
4. 是否是中间件拦截
5. 是否是 OAuth Provider 配置问题
6. 需要查看哪些文件

先只分析,不要修改。

AI 编程工具应该看哪些文件

常见文件包括:

auth.ts
middleware.ts
app/api/auth/[...nextauth]/route.ts
pages/api/auth/[...nextauth].ts
.env.example
.env.local
next.config.js

如果是 Credentials 登录,还可能看:

lib/auth.ts
lib/db/*
schema/*
users table

最常见:Secret 没配

有些登录库在生产环境必须配置 secret。

不要把真实 secret 粘贴给 AI 编程工具。

可以这样问:

我不粘贴真实 secret。

请帮我检查:
1. 项目代码读取的是 AUTH_SECRET 还是 NEXTAUTH_SECRET
2. .env.example 是否写了这个变量
3. 本地和生产环境是否都需要配置
4. 缺少 secret 会出现什么错误

回调地址错误

OAuth 登录经常卡在 callback。

比如本地是:

http://localhost:3000/api/auth/callback/github

生产是:

https://example.com/api/auth/callback/github

如果 Provider 后台填错,就会失败。

你可以让 AI 编程工具输出检查清单:

请给我一份 OAuth callback 排查清单。

要求包括:
1. 本地回调地址
2. 生产回调地址
3. 环境变量里的 APP_URL / NEXTAUTH_URL
4. Provider 后台配置
5. middleware 是否拦截 callback 路径
6. cookie secure 设置是否和环境匹配

不要让 AI 编程工具乱改登录逻辑

错误提示词:

登录 403,帮我改 auth。

更好的提示词:

请先判断是配置问题、回调地址问题、cookie 问题,还是代码逻辑问题。不要先改登录逻辑。

8.7 案例五:tRPC 类型没报错,但接口返回不对

tRPC 这类项目的特点是:

前后端类型连得很紧。

这对开发很舒服,但出问题时,新手容易不知道从哪里看。

常见场景:

前端调用 mutation 失败
query 返回 undefined
服务端 procedure 抛错
input schema 不匹配
前端类型对了,但运行时数据不对

推荐提示词

tRPC 接口调用失败。

请先分析当前项目,不要修改文件。

我提供的信息:

调用的 procedure:
{例如 post.create}

前端调用代码:
{粘贴调用片段}

服务端 router:
{粘贴或指定文件}

错误内容:
{粘贴错误}

请帮我判断:
1. 是 input schema 不匹配
2. 是 resolver 逻辑错误
3. 是数据库返回为空
4. 是权限中间件拦截
5. 是客户端调用方式不对
6. 需要查看哪些文件

先只分析,不要修改。

AI 编程工具应该看哪些文件

tRPC 项目常见:

server/api/root.ts
server/api/routers/*
trpc/server.ts
trpc/client.ts
src/server/api/*
src/utils/api.ts
schema/*

如果是 T3 Stack,可能会看:

src/server/api/root.ts
src/server/api/routers/*
src/trpc/*
src/env.js

input schema 很关键

很多 tRPC 接口会用 Zod 校验 input。

比如服务端要求:

input: z.object({
  title: z.string().min(1),
  content: z.string()
})

但前端传:

{
  title: ''
}

这就会失败。

你可以让 AI 编程工具专门对比:

请对比前端传入的 input 和服务端 procedure 的 input schema。

请指出:
1. 缺少字段
2. 字段类型不匹配
3. 字段值不满足 min / max / enum
4. 是否需要前端表单先校验
5. 是否需要后端返回更友好的错误

不要把类型安全当万能

tRPC 可以减少很多前后端字段不一致的问题。

但它不能自动保证:

数据库里一定有数据
用户一定有权限
环境变量一定存在
第三方服务一定可用
业务逻辑一定正确

所以接口报错时,仍然要看运行时日志。

提示词:

虽然这是 tRPC 项目,但请不要只看 TypeScript 类型。

请同时检查:
1. 运行时日志
2. 数据库返回
3. 权限中间件
4. input schema
5. 客户端调用参数

8.8 案例六:429 不是代码坏了,可能是限流或额度问题

429 很常见,尤其是 AI API 项目、支付接口、短信接口、邮件接口、搜索接口。

状态码:

429 Too Many Requests

通常表示:

请求太频繁
额度用完
限流触发
同一个 IP 请求太多
同一个 API Key 请求太多
短时间重试太猛

新手看到 429,经常会让 AI 编程工具:

帮我修接口。

但 429 很多时候不是代码 bug,而是使用方式问题。


推荐提示词

接口返回 429 Too Many Requests。

请先分析当前项目,不要修改文件。

请求信息:

URL:
{填入}

方法:
{填入}

响应内容:
{填入}

请求频率:
{大概多久请求一次}

请帮我判断:
1. 这是本地代码限流,还是上游服务限流
2. 是否和 API Key、IP、用户账号、额度有关
3. 是否有重试逻辑过于频繁
4. 是否需要加 debounce、缓存或队列
5. 是否应该减少自动重试
6. 最小修改方案是什么

AI API 项目里的 429

如果是模型 API,429 可能来自上游。

比如:

余额不足
额度耗尽
RPM / TPM 限制
并发太高
模型服务繁忙

你要让 AI 编程工具分清楚:

429 是我们自己的服务返回的,还是上游模型服务返回的?

提示词:

请根据响应内容和服务端日志判断 429 来自本地接口还是上游 API。

如果来自上游,请不要修改本地限流逻辑。
先给出降低请求频率、增加错误提示、减少自动重试的方案。

不要暴力重试

很多项目遇到请求失败,会自动重试。

如果重试没有限制,就会越重试越 429。

你可以让 AI 编程工具检查:

请检查项目里是否有自动重试逻辑。

重点查看:
1. fetch wrapper
2. API client
3. retry 配置
4. React Query / SWR 配置
5. 队列或轮询代码

不要修改,先输出风险。

合理修复方向

429 的修复通常不是“突破限制”,而是:

减少重复请求
加 debounce
加缓存
给用户友好提示
延长重试间隔
停止无限重试
记录上游错误

不要写成:

绕过限流
突破限制
刷接口

这是错误方向。


8.9 案例七:接口 200 了,但前端还是报错

有时候最迷惑的情况是:

接口返回 200,但页面还是报错。

这说明问题可能不在 HTTP 状态码,而在数据格式。

比如前端期待:

{
  "data": {
    "items": []
  }
}

但后端返回:

{
  "items": []
}

状态码是 200,但前端读取:

res.data.items

就会炸。


推荐提示词

接口返回 200,但前端页面仍然报错。

请先分析当前项目,不要修改文件。

我提供信息:

接口返回 JSON:
{粘贴返回}

前端报错:
{粘贴报错}

前端使用数据的代码:
{粘贴代码或指定文件}

请帮我判断:
1. 前端期待的数据结构是什么
2. 后端实际返回的数据结构是什么
3. 哪个字段不一致
4. 应该改前端解析,还是改后端返回
5. 哪种改法影响最小

AI 编程工具应该对比什么

它应该对比:

接口 response
前端类型定义
前端解构代码
组件 props
后端返回对象
错误堆栈

如果项目有类型文件:

types/api.ts
schema.ts
validators.ts

也要一起看。


最小修复思路

两种方向:

第一种,后端返回应该保持现有约定。

改前端解析

第二种,前端多个地方都依赖旧结构。

改后端返回格式

不要让 AI 编程工具随便选。

提示词:

请判断当前项目里这个接口返回结构是否已经被多个地方使用。

如果只影响一个页面,优先改前端解析。
如果多个页面依赖统一 API 格式,优先保持 API 格式一致。

8.10 本章通用模板

下面这些模板可以直接复制。


模板一:API 报错诊断

请作为 API 报错诊断助手帮我排查接口问题。

要求:
1. 先不要修改任何文件
2. 不要只根据状态码下结论
3. 先分析请求 URL、方法、Headers、Body、响应状态码、响应内容、服务端日志
4. 判断请求是否打到正确路径
5. 判断是否缺少鉴权、参数、环境变量或上游服务配置
6. 给出最小排查步骤
7. 最后再判断是否需要改代码

输出格式:
- 状态码:
- 最可能原因:
- 当前证据:
- 还缺哪些信息:
- 应该查看的文件:
- 不应该先改的地方:
- 最小排查步骤:
- 可能的最小修复方案:

模板二:AI Chatbot 接口 500

AI Chatbot 的 POST /api/chat 返回 500。

请先分析当前项目,不要修改任何文件。

信息如下:
请求 URL:
请求 Body:
响应内容:
服务端日志:

请判断:
1. 是代码错误、环境变量错误,还是上游模型 API 错误
2. 是否缺少 API Key、Base URL 或模型名
3. 应该查看哪些文件
4. 是否需要检查 .env / .env.local
5. 最小排查步骤是什么

模板三:接口 404

前端请求接口返回 404。

请先分析当前项目,不要修改文件。

请求 URL:
请求方法:
响应内容:

请检查:
1. 项目使用 App Router 还是 Pages Router
2. 对应 API 路由文件应该在哪里
3. 当前项目是否已有对应接口
4. 请求方法是否和后端导出方法一致
5. 是否是路径、方法或动态参数问题

模板四:Hono / Zod 400

Hono API 返回 400。

请先分析当前项目,不要修改文件。

请求 URL:
请求方法:
请求 Body:
响应内容:

请判断:
1. 是否是请求参数校验失败
2. 是否有 Zod / Valibot / validator middleware
3. 当前请求缺少哪些字段
4. Content-Type 是否正确
5. 应该修前端请求,还是优化后端错误提示

模板五:Auth.js 登录失败

Auth.js / NextAuth 登录失败。

请先分析当前项目,不要修改文件。

登录方式:
错误状态码:
错误内容:
当前环境:

请判断:
1. 是否缺少 AUTH_SECRET / NEXTAUTH_SECRET
2. 是否是 callback URL 错误
3. 是否是 Cookie / Session 问题
4. 是否被 middleware 拦截
5. 是否是 OAuth Provider 配置问题
6. 需要查看哪些文件

模板六:tRPC 接口失败

tRPC 接口调用失败。

请先分析当前项目,不要修改文件。

procedure:
前端调用代码:
服务端 router:
错误内容:

请判断:
1. input schema 是否匹配
2. resolver 是否抛错
3. 是否数据库返回为空
4. 是否权限中间件拦截
5. 是否客户端调用方式不对
6. 最小修复方案是什么

模板七:429 限流

接口返回 429 Too Many Requests。

请先分析当前项目,不要修改文件。

请求 URL:
响应内容:
请求频率:
服务端日志:

请判断:
1. 429 来自本地接口还是上游服务
2. 是否和 API Key、IP、额度、并发有关
3. 是否有自动重试过多
4. 是否应该加 debounce、缓存或队列
5. 如何给用户更友好的错误提示

模板八:接口 200 但页面报错

接口返回 200,但前端仍然报错。

请先分析当前项目,不要修改文件。

接口返回 JSON:
前端报错:
前端使用数据的代码:

请判断:
1. 前端期待的数据结构
2. 后端实际返回的数据结构
3. 哪个字段不一致
4. 应该改前端解析还是后端返回
5. 哪种改法影响最小

8.11 本章总结

接口报错最怕两件事。

第一,信息太少。

只告诉 AI 编程工具:接口 500 了。

第二,改得太快。

还没看请求和日志,就让 AI 编程工具改代码。

正确方式是:

先收集证据,再判断层级,最后做最小修复。

这一章你要记住:

401 不一定是 Key 错。
403 不一定是权限代码错。
404 不一定是接口不存在。
400 不一定是后端坏了。
429 不一定是代码 bug。
500 不一定要重构。
200 也不代表前端一定能用。

接口问题要分层看:

请求层:URL、方法、Header、Body
路由层:接口文件、动态参数、请求方法
鉴权层:Token、Cookie、Session、Secret
校验层:Zod、Valibot、schema、必填字段
环境层:API Key、Base URL、数据库、第三方服务
业务层:数据库返回、权限判断、状态流转
上游层:模型 API、支付、短信、邮件、搜索服务
前端层:返回结构、类型定义、组件解析

推荐工作流:

打开 Network 面板
复制请求和返回
复制服务端日志
让 AI 编程工具判断问题层级
指定相关 API 文件
先输出诊断
确认后最小修改
检查 diff
重新请求接口
确认错误提示是否友好

这章最重要的一句话:

接口报错,不要让 AI 编程工具猜;把请求、返回和日志给它,让它按后端流程查。

下一章可以继续讲:

代码改完以后,怎么让 AI 编程工具审查 diff、找隐藏 bug、检查无关修改,并结合真实 PR 审查场景,让它从“写代码助手”变成“代码审查助手”。