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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:58:33