如何在 NextJS 中间件中获取查询字符串参数

Ash*_*Ash 18 javascript middleware next.js

我正在使用 NextJS 中间件,可以nextUrl从请求中获取对象,其中包括路径名等内容,但如何从中间件中获取查询字符串参数?我可以看到它作为 href 返回的字符串的一部分返回,然后我可以自己解析它,但我想知道它是否在它自己的对象中返回?

例如

export const middleware = (request) => {
  const { nextUrl: { query } } = request;
  ...
};
Run Code Online (Sandbox Code Playgroud)

其中query等于

{
  param1: 'foo',
  param2: 'bar',
  etc.
}
Run Code Online (Sandbox Code Playgroud)

T.C*_*kij 26

nextUrl对象已包含searchParams有效实例URLSearchParams

EG的使用

export function middleware(req: NextRequest) {
    if(req.nextUrl.searchParams.get('flag')) {
        return NextResponse.rewrite('/feature);
    }
}
Run Code Online (Sandbox Code Playgroud)


Ash*_*Ash 7

正如 @j-cue 上面所说,但我也发现你可以searchnextUrl.

例如

export const middleware = (request) => {
  const { nextUrl: { search } } = request;
  const urlSearchParams = new URLSearchParams(search);
  const params = Object.fromEntries(urlSearchParams.entries());
};
Run Code Online (Sandbox Code Playgroud)


小智 -3

您可能只想从某个位置提取它:

const urlSearchParams = new URLSearchParams(window.location.search);
const params = Object.fromEntries(urlSearchParams.entries());
Run Code Online (Sandbox Code Playgroud)