API 中的 NextJS ServerSideRendering 从请求获取查询参数

问题描述 投票:0回答:1

我想从 API 调用中的请求获取查询参数。我如何在服务器端检索它?

import prisma from "@/app/lib/prisma";

import { NextApiRequest, NextApiResponse } from 'next'
import { Context } from "vm";

export async function getServerSideProps(ctx: Context) {
    const { igenykod } = ctx.params;
    return {
        props: {
            igenykod
        },
    };
};

export async function GET(
    req: NextApiRequest,
    res: NextApiResponse
) {
    const kod = req.query.igenykod as string
    const igenystatusz = await prisma.igenystatusz.findMany({
        where: {
            igenykod: "CK1"
        }
    });
    return new Response(JSON.stringify(igenystatusz));

}

在此代码中,req.query 未定义。我读过有关 getServerSideProps 的内容,但我不想为请求创建页面。我可以像 ExpressJS 路由一样简单吗?

rest next.js prism server-side-rendering
1个回答
0
投票

app
目录(路由器)中,您可以通过以下方式在
API 路由
中获取查询字符串(又名 ?search=value):

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

export async function GET(req: NextRequest) {
  const { searchParams } = new URL(req.url);
  console.log(searchParams.get("igenykod"));
  return new Response("...");
}

API 路由处理程序仅传递请求,其类型是

NextRequest
而不是
NextApiRequest
,适用于
pages
路由器(仅在
getServerSideProps
起作用的情况下)。

© www.soinside.com 2019 - 2024. All rights reserved.