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

Next.js路由处理器中Params未定义问题排查求助

解决Next.js App Router API路由中req未定义及请求体获取问题

核心问题:API路由函数参数格式错误

Next.js App Router(新API路由)的HTTP方法函数(如POST)不是接收包含req/res的对象作为参数,而是直接将NextRequest作为第一个参数传入。你定义的params类型完全错误,导致解构出来的req为undefined。

修正后的API路由代码

import { NextRequest, NextResponse } from "next/server";
import prisma from "@/lib/prisma";

// 直接接收request作为第一个参数
export const POST = async (req: NextRequest) => {
  try {
    // 解析请求体中的JSON数据
    const meetUpData = await req.json();
    
    const result = await prisma.meetUp.create({
      data: {
        title: meetUpData.title,
        description: meetUpData.description,
      },
    });

    return NextResponse.json(result, { status: 201 });
  } catch (error) {
    return NextResponse.json({ error: "创建失败" }, { status: 500 });
  }
};

前端代码的小优化

你的提交按钮上多余绑定了onChange={changeValue},这会导致不必要的状态更新,应该移除:

// 修正后的submit按钮
<input type="submit" value="Create" />

关键说明

  • App Router的API路由函数参数规则:GET/POST等方法函数直接接收NextRequest实例,不需要解构对象。
  • 获取请求体:通过await req.json()解析JSON格式的请求体数据,这是App Router中获取POST数据的正确方式。
  • 错误处理:添加try/catch捕获数据库操作或请求解析的错误,返回合适的HTTP状态码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:20:08