Next.js 写操作与接口层
在 App Router 里,Route Handlers 基本就是接口层正路。
如果只把它看成“API Routes 换了个名字”,很容易低估它现在和缓存、鉴权、重验证之间的关系。更贴切一点的理解 是:
- 它延续了文件系统路由
- 直接使用 Web
Request/ResponseAPI - 可以和 App Router 的缓存、重验证、鉴权体系接起来
- 很适合承担 BFF 和轻量服务端接口
Server Actions 先怎么理解
Server Actions 是 App Router 里非常关键的一块能力。它让“写操作”不再一定要先绕到单独接口层,再从客户端手工拼一次请求。
先把它理解成什么
可以把 Server Actions 理解成:
- 定义在服务端的可调用函数
- 常用于表单提交和数据写入
- 可以直接接上重定向、重验证和错误处理
它不是要彻底取代 Route Handlers,而是给页面级写操作提供更顺手的一条主线。
一个最小例子
'use server';
import { revalidatePath } from 'next/cache';
export async function createPost(formData: FormData) {
const title = String(formData.get('title'));
await db.post.create({ title });
revalidatePath('/posts');
}
然后在组件里直接使用:
import { createPost } from './actions';
export default function CreatePostForm() {
return (
<form action={createPost}>
<input name="title" />
<button type="submit">Create</button>
</form>
);
}
它为什么会比传统接口更顺
传统写法通常是:
- 前端提交表单
- 请求
/api/* - 接口写数据库
- 前端再手工刷新列表或跳转
Server Actions 可以把这条链压得更短:
- 表单直接调用服务端函数
- 服务端写入
- 服务端立即
revalidatePath/revalidateTag - 页面结果自动更新或再导航