如何让Nextjs App Router中的API路由像Pages Router一样工作

ui7jx7zq  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(115)

我希望我的NextJS应用路由器API代码能在浏览器的每个页面请求上执行。也就是说,在页面路由器中使用API Routes时,我有这样的代码,它会在每个请求上执行(在生产模式下)。
/pages/API/route1.ts

export async function GET(request: Request) {
  return new Response(
    "Hello, from /api/test1/routes.ts " + new 
Date().toLocaleString()
  );
}

app/API/route1.ts

export async function GET(request: Request) {
  return new Response(
    "Hello, from /api/test1/routes.ts " + new 
Date().toLocaleString()
  );
}

也就是说,结果是当我运行第一段代码时,每个请求的日期都会改变(在生产环境中),而当我运行第二段代码时,日期仍然保持在构建时的任何日期。
我的问题是,如果我想使用应用程序路由器,我如何才能获得与之前在页面路由器中相同的行为?
然而,当我使用App Router使用RSC(React Server Components)技术做基本相同的事情时,组件在构建时运行,并且永远不会再次运行。下面是代码:

xjreopfe

xjreopfe1#

你所经历的是,路由处理程序的响应被认为是静态的,因此被缓存,因为你没有使用任何动态功能,如访问cookie,头部或访问路径或搜索参数。
要解决此问题并强制在每个请求上动态调用路由处理程序而不进行任何缓存,请将以下路由段配置选项添加到路由处理程序:

export const dynamic = 'force-dynamic'

有关dynamic段配置选项的更多详细信息,请参见Next.js文档。

相关问题