Next.js 14/15 版本的 API 路由 与传统的 Express.js 路由 在架构、运行环境和使用方式上有所不同。以下是核心区别:
1. 运行环境
对比项 | Next.js API 路由 | Express.js 传统路由 |
运行方式 | Serverless / Edge Functions(默认) | 传统 Node.js 服务器 |
是否需要服务器 | 无需手动管理服务器 | 需要手动创建 express() 实例 |
可运行环境 | Vercel Edge, Serverless, Bun, AWS Lambda | 仅限 Node.js 服务器 |
适合场景 | 低延迟 API、Serverless 环境 | 完整控制,适用于大型后端应用 |
总结:Next.js API 路由更适合 Serverless 和 Edge 环境,而 Express.js 适用于传统服务器。
2. API 路由定义
Next.js API 路由(基于文件系统路由)
- 在 app/api/route.ts 或 pages/api/*.ts 下定义 API
- 无需 express(),自动处理路由
Next.js 14/15(App Router)
// app/api/hello/route.ts
import { NextResponse } from "next/server";
export async function GET() {
return NextResponse.json({ message: "Hello, Next.js API!" });
}
访问 URL
GET /api/hello # 自动映射到 app/api/hello/route.ts
Express.js 传统 API 路由
- 需要手动 app.get(), app.post()。
- 必须运行在 Node.js 服务器上。
Express 方式
import express from "express";
const app = express();
app.get("/api/hello", (req, res) => {
res.json({ message: "Hello, Express API!" });
});
app.listen(3000, () => console.log("Server running on port 3000"));
访问 URL
GET /api/hello
区别
- Next.js 直接使用文件系统路由,无需 app.get() 等手动定义。
- Express 需要手动管理服务器、请求、响应。
3. 处理请求 & 响应
Next.js API(app/api/route.ts,基于 NextResponse)
export async function POST(req: Request) {
const data = await req.json();
return NextResponse.json({ received: data });
}
Express.js API(基于 req, res)
app.post("/api/data", (req, res) => {
res.json({ received: req.body });
});
区别
- Next.js API 直接处理 Request 对象(与 Web 标准 fetch API 一致)。
- Express API 需要 req, res 处理。
- Next.js NextResponse 提供更强的 headers, cookies API。
4. 服务器管理
Next.js API(Serverless & Edge)
export const config = {
runtime: "edge", // 运行在 Edge Functions
};
Express.js API(Node.js Server)
app.listen(3000, () => console.log("Server running"));
区别
- Next.js API 默认 Serverless,不需要 listen()。
- Express.js 需要手动 listen()。
5. 性能 & 缓存
Next.js API
- 默认支持 Serverless,每次请求执行。
- 支持 Edge Functions(更快的 API 响应)。
- 支持 缓存优化(revalidatePath())。
Express.js API
- 运行在 长期运行的 Node.js 服务器。
- 需要手动管理缓存(Redis, CDN)。
区别
- Next.js API 适用于高并发、Serverless 场景。
- Express 适用于长时间运行的后端服务。
总结
对比项 | Next.js API 路由 | Express.js 传统路由 |
运行环境 | Serverless / Edge Functions | 传统 Node.js 服务器 |
是否需要手动管理服务器 | 不需要 | 需要 |
路由方式 | 基于文件系统 (app/api/route.ts) | 需要手动 app.get() |
处理 HTTP 请求 | NextRequest , NextResponse | req , res |
是否支持 Edge | 支持(更快响应) | 仅支持 Node.js |
适用场景 | 高并发、无服务器、Vercel、Serverless | 复杂后端,传统 API 服务器 |
一句话总结 Next.js API 路由适用于 Serverless & Edge 环境,而 Express.js 适用于完整控制的后端服务器!