面试官:Next.js 的 API 路由与传统的 Express.js 路由有什么区别?

开发 前端
Next.js 14/15 版本的 API 路由与传统的 Express.js 路由 在架构、运行环境和使用方式上有所不同。

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 适用于完整控制的后端服务器!

责任编辑:姜华 来源: 大迁世界
相关推荐

2023-02-17 08:10:24

2021-11-30 07:44:50

FinalFinallyFinalize

2021-12-10 12:01:37

finalfinallyfinalize

2024-04-03 15:33:04

JWTSession传输信息

2024-09-19 08:42:43

2023-07-11 08:40:02

IO模型后台

2013-06-14 09:27:51

Express.jsJavaScript

2022-05-16 11:04:43

RocketMQPUSH 模式PULL 模式

2021-12-13 06:56:45

Comparable元素排序

2024-03-20 15:12:59

KafkaES中间件

2021-12-23 07:11:31

开发

2019-02-21 10:38:10

Web 开发代码

2025-01-17 09:29:42

2023-02-09 07:01:35

转发重定向Java

2024-12-13 08:37:32

2020-12-22 13:46:48

APISKD

2023-12-13 13:31:00

useEffect对象浏览器

2023-02-20 07:19:14

2023-11-23 10:45:13

Next.js 14Supabase

2021-10-21 07:18:02

微信程序方式
点赞
收藏

51CTO技术栈公众号