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

Next.js DELETE接口params对象始终为undefined问题求助

解决Next.js App Router中DELETE接口无法获取路径params的问题

你遇到的问题是因为Next.js App Router的API路由函数参数结构和Pages Router不同,直接解构{ params }的写法不正确。

修正后的代码

import { NextResponse } from "next/server";
import prisma from "../../../../../prisma/client";

// 正确的参数结构:第一个是request对象,第二个是包含params的上下文对象
export async function DELETE(request, { params }) {
  console.log('Params:', params);
  const id = params?.id;
  console.log('ID:', id);

  // 先判断id是否存在
  if (!id) {
    return NextResponse.json({ error: "Missing issue ID" }, { status: 400 });
  }

  try {
    const issue = await prisma.issue.findUnique({
      where: { id: parseInt(id) }
    });

    if (!issue) {
      return NextResponse.json({ error: "Invalid issue" }, { status: 404 });
    }

    await prisma.issue.delete({
      where: { id: issue.id },
    });

    return NextResponse.json({});

  } catch (error) {
    console.log(error);
    return NextResponse.json({ status: "Fail" }, { status: 500 });
  }
}

关键修改点

  • 路由函数参数改为DELETE(request, { params }):params是从第二个上下文参数中解构出来的,而非直接作为第一个参数的属性
  • 增加了id存在性判断,避免后续parseInt时出现错误

额外检查项

  • 确认你的API路由文件结构为app/api/issues/[id]/route.js:必须用[id]命名文件夹,Next.js才能识别动态路径参数
  • 重启Next.js开发服务器:路由结构变更后需要重启才能生效
  • 验证Postman请求URL无误:确保是http://localhost:3000/api/issues/2,没有拼写错误

内容的提问来源于stack exchange,提问作者Nozibul Islam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:22:12