Nee*_*lia 20

在 NextJS 13 中,在app/api/route.js中,您可以使用 URL 类来读取参数

export async function GET(req){
    const {searchParams} = new URL(req.url);
    const param = searchParams.get("/*Your param key here*/");
    console.log(param)
}
Run Code Online (Sandbox Code Playgroud)

获取请求体

export async function POST(req){
    const body = await req.json()
    console.log(body)
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答。不幸的是,这看起来确实不直观,会鼓励 NextJS 采用类似于 Express 的模型,或者更好的是合并 API,这样我们就没有 5 个不同的“Request”模型 API 来跟踪。 (6认同)

Joe*_*ddy 17

对于像我一样想要获取动态路由参数的人来说,它位于第二个参数中。

/api/something/[id]/route.ts

export async function GET(req, { params }) {
  const id = params.id;
}
Run Code Online (Sandbox Code Playgroud)


小智 7

我认为现在最好的方法就是简单地使用

req.nextUrl.searchParams
Run Code Online (Sandbox Code Playgroud)
export const GET = async (req) => {
    // Req Body
    const requestBody = await request.json();


    // Search Params
    const searchParams = req.nextUrl.searchParams;
    const foo = searchParams.get('foo');
}
Run Code Online (Sandbox Code Playgroud)

如果你检查一下NextURLtype def,就会发现里面有很多好东西。


Vik*_*Ray 1

在 NextJS 13 中,通过dirroute.ts中的文件约定app,我们可以使用以下命令读取查询参数和请求正文:

import url from "URL";

export async function POST(request: Request) {

  const requestBody = await request.json(); // To read request data

  const queryParams = url.parse(request.url, true).query;  // To read query params

  // Returning the query params & body
  return NextResponse.json({
    requestBody,
    queryParams,
  });

}
Run Code Online (Sandbox Code Playgroud)

  • 太丑了,但我想这是读取查询参数的最佳方式? (2认同)