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

Next.js 14中req.query无法正常工作的问题求助

解决Next.js 14 App Router API路由无法获取查询参数的问题

问题核心是你混用了Pages Router与App Router的API请求类型。在App Router的API路由中,GET函数接收的是Web标准的Request对象,而非Pages Router里的NextApiRequest,因此直接访问req.query会返回undefined。

修正步骤:

  • 移除NextApiRequest的导入,改用原生Request类型
  • 通过URLSearchParams解析请求URL中的查询参数

修正后的代码:

import { initMongoose } from "@/lib/mongoose";
import Product from "@/models/products";
import { NextResponse } from "next/server";

export async function GET(req: Request) {
  await initMongoose();
  // 解析URL查询参数
  const searchParams = new URL(req.url).searchParams;
  // 转换为预期的键值对对象
  const queryObj = Object.fromEntries(searchParams.entries());
  console.log("Query is ", queryObj);
  
  return NextResponse.json(await Product.find().exec())
}

补充说明:

  • new URL(req.url).searchParams会提取URL中的查询参数集合
  • Object.fromEntries(searchParams.entries())将参数集合转为你需要的格式,比如访问?abc=def时,queryObj会是{ abc: "def" }
  • App Router的API路由无需res参数,直接返回NextResponse即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:00:58