Next.js API路由中如何从请求获取查询参数?
问题解决:Next.js App Router中API路由获取查询参数
核心问题分析
你的代码混淆了Next.js Pages Router与App Router的规则:
- App Router的API路由(
app/api/.../route.ts)不支持getServerSideProps,该方法仅适用于页面组件 - 错误使用了Pages Router的
NextApiRequest/NextApiResponse类型,App Router的API路由需使用Web标准的Request/Response对象
修正后的代码
import prisma from "@/app/lib/prisma"; // App Router API路由使用Web标准Request对象 export async function GET(req: Request) { // 从URL中提取查询参数,等效于Express的req.query const url = new URL(req.url); const kod = url.searchParams.get('igenykod') as string; // 使用动态查询参数查询数据库 const igenystatusz = await prisma.igenystatusz.findMany({ where: { igenykod: kod } }); return new Response(JSON.stringify(igenystatusz), { headers: { 'Content-Type': 'application/json' } }); }
关键说明
- App Router的API路由文件必须命名为
route.ts(或.js),放置在app/api/[路由路径]目录下(如你的项目结构中的app/api/igenystatusz/route.ts) - 直接通过
/api/igenystatusz?igenykod=XXX访问该API,无需额外创建页面 - 若需使用动态路由参数(如
/api/igenystatusz/CK1),可通过params获取:
export async function GET(req: Request, { params }: { params: { igenykod: string } }) { const kod = params.igenykod; // 后续业务逻辑 }
清理无效代码
直接移除原代码中的getServerSideProps函数,App Router的API路由完全不需要该方法。
内容的提问来源于stack exchange,提问作者Papp Zoltán
相关产品推荐
相关产品推荐

