
界面有了,数据库也准备好了。你点击"提交"按钮,数据应该存入数据库——但前端和数据库之间还缺一座桥。
这座桥就是 API(应用程序接口)。前端通过 HTTP 请求告诉后端用户想要什么,后端处理后返回响应。
你理解了需要后端,但具体怎么写?难道要自己搭一个 Express 服务器?老师傅说不用——Next.js 内置了 API Route 功能,创建一个文件就是一个接口,不需要额外搭建服务器。
不过在讲 API Route 之前,先理解一个更基础的概念:路由(Route)。
你每天都在跟路由打交道,只是没意识到。打开浏览器看看地址栏:
movie.douban.com/ → 看到豆瓣电影首页movie.douban.com/subject/37311135/ → 看到《飞驰人生 3》的详情页movie.douban.com/subject/37311135/comments?status=P → 看到这部电影的短评(?status=P 表示"看过的人的评论")movie.douban.com/chart → 看到排行榜URL 不同,看到的页面就不同。路由就是这件事——URL 路径决定了展示什么内容。 ? 后面的部分是查询参数,用来进一步筛选或控制显示方式。
在 Next.js 里,这个对应关系直接体现在文件结构上:
app/
├── page.tsx → yourdomain.com/
├── subject/
│ └── [id]/
│ ├── page.tsx → yourdomain.com/subject/37311135
│ └── comments/
│ └── page.tsx → yourdomain.com/subject/37311135/comments
└── chart/
└── page.tsx → yourdomain.com/chart
文件夹结构就是 URL 结构。创建一个文件,就多了一个页面。[id] 是动态段——不管是 37311135 还是别的电影 ID,都由同一个 page.tsx 处理。这就是 Next.js 的文件系统路由——不需要写配置文件来定义"哪个 URL 对应哪个页面",文件放在哪,URL 就是什么。
上面的路由是给用户看页面的。API Route 是同样的思路,但不是返回页面,而是返回数据。
在 app/api/ 目录下创建 route.ts 文件,就会生成一个数据接口:
app/api/movies/route.ts → yourdomain.com/api/movies(返回电影列表的 JSON 数据)app/api/movies/[id]/route.ts → yourdomain.com/api/movies/123(返回某部电影的 JSON 数据)区别只是:page.tsx 返回用户看到的页面,route.ts 返回程序用的数据。
在 route.ts 文件中,你导出对应 HTTP 方法的函数。比如导出 GET 函数来处理 GET 请求,导出 POST 函数来处理 POST 请求。
Next.js 会根据请求方法自动调用对应的函数。如果同时导出了 GET 和 POST,同一个 URL 就可以同时支持获取和创建两种操作。
Next.js 版本迭代快,API 可能有变化。让 AI 用 Context7 查询最新文档,确保生成的代码符合当前版本。
整个过程中你不需要手写每个接口。你只需要告诉 AI 需求,它会生成完整的代码。你的工作是验证结果:
pnpm dev 启动,页面能正常操作不需要读懂每一行代码。知道每个文件的职责,出问题时能告诉 AI "改哪个文件"就够了。
| 小节 | 内容 |
|---|---|
| 7.0 跑通你的第一个全栈应用 | 动手做一个 Todo 应用,体验完整的全栈数据流 |
| 7.1 一个接口不够用了 | 关联查询、分页、过滤排序——当数据量和需求增长时怎么办 |
| 7.2 当接口出了问题 | 参数校验、幂等性、错误处理——上线后的第一批坑 |
| 7.3 让接口更好用 | 版本管理、接口文档、批量操作——把接口当产品来打磨 |