You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 13 app目录下API路由请求返回404问题求助

解决Next.js 13 App路由API返回404的问题

你的核心问题是用了Pages路由的API写法来写App路由的接口,两者的规则完全不同,所以导致请求找不到对应的处理逻辑。

正确的App路由API写法规则

在Next.js 13的App Router中,API路由必须遵循以下要求:

  • 接口文件必须命名为 route.js(或 route.ts)
  • 文件路径对应API路径:比如 app/api/admin/all/route.js 对应 GET /api/admin/all
  • 每个HTTP方法对应导出一个同名的异步函数(如GET、POST),而不是默认导出一个处理所有方法的函数
  • 不再使用req/res对象,而是使用Next.js提供的NextRequest和NextResponse

针对你的代码修改示例

把原来的文件调整为 app/api/admin/all/route.js,代码替换为:

import { PrismaClient } from '@prisma/client';
import { NextResponse } from 'next/server';

const prisma = new PrismaClient();

export async function GET() {
  try {
    const admins = await prisma.admin.findMany();
    return NextResponse.json(admins, { status: 200 });
  } catch (error) {
    return NextResponse.json({ error: 'Failed to get admins' }, { status: 500 });
  }
}

额外排查点

  • 确保服务器已经重启:修改路由结构后需要重启Next.js开发服务器才会生效
  • 检查文件命名:route.js不能写成routes.js或其他变体,大小写要匹配(Linux服务器会区分大小写,Windows不区分,但建议统一规范)
  • 检查是否有自定义中间件(middleware.js)拦截了API请求,导致请求没到达路由处理逻辑
  • 确认App路由模式已启用:项目根目录存在app文件夹,且next.config.js中没有禁用App Router的配置

内容的提问来源于stack exchange,提问作者Ezequiel González Macho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:52:12