如何在nextjs 14中使用动态API路由动态获取slug?

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

[我正在尝试使用 nextjs-14 最新版本使用动态 Api 路由来获取用户的验证令牌。 对于用户的验证过程,我的基本路由是 nextjs4 中使用应用程序路由器的“/api/auth/verify”。 现在,当用户注册自己时,我会在用户的邮件中发送注册链接,验证链接看起来像“mywebsite/api/auth/register/token”,

简而言之,对于不同的用户,令牌会有所不同,例如, “mywebsite/api/auth/register/token1”、“mywebsite/api/auth/register/token2”、“mywebsite/api/auth/register/token3” 所以

我怎样才能获得针对不同用户而变化的令牌?

我的路线是 api => 注册

                      login
                      verify
                      \[token\]

我想获取正在变化的令牌参数。我怎样才能进入route.js文件

我无法在此获取请求中记录某些内容。我在邮递员中点击获取请求时也收到此错误:

错误:页面“/api/auth/verify/[token]/route”缺少导出函数“generateStaticParams()”,这是“output:export”配置所必需的。

我想在这段代码中获取动态令牌,我如何在这里获取该令牌?

next.js routes next.js14
1个回答
0
投票

在你的

next.config.js
你有
output: "export"
。通过将输出设置为
"export"
,您告诉 Next.js 编译器您需要一个静态资产来部署到我的静态托管,但我没有服务器来运行我的应用程序。

当您这样做时,您无法生成依赖于运行时数据的路由处理程序。如果构建时令牌未知,则无法生成

/api/auth/verify/{token}

如果您有编译器在构建时可以知道的标记子集,您可以提供导出的标记

generateStaticParams

// app/api/auth/verify/[token]/route.ts

export async function GET(req, {params}) {
  return new Response(`${params.token}-${Math.random().toString()}`)
}

export function generateStaticParams() {
  return [{token: "1"}, {token: "2"}, {token: "3"}, {token: "4"}]
}

此解决方案对您的情况没有帮助,通过运行时生成的令牌验证用户,您必须获得红色

output: "export"
并部署到 Node.js 服务器中自托管的无服务器平台才能实现此功能.

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