next.js:相当于API端点的getStaticProps()?

next.js:相当于API端点的getStaticProps()?,next.js,vercel,Next.js,Vercel,在next.js中,我们可以通过在实现中定义getStaticProps()来向平台传递一个提示,以便在构建时预呈现某些页面 我们在pages/API/中实现的API端点是否有类似的机制 示例:我们有一个静态呈现来自数据库或外部网站的帖子的页面,我们希望API端点能够在同一时间返回状态完全相同的帖子,只返回JSON。我相信API路由没有这种情况 您可以做的是在请求getStaticProps中的数据后,将帖子保存到磁盘或外部存储器上的某个文件,然后将此文件用作api路由处理程序的数据源,类似于:

在next.js中,我们可以通过在实现中定义
getStaticProps()
来向平台传递一个提示,以便在构建时预呈现某些页面

我们在
pages/API/
中实现的API端点是否有类似的机制


示例:我们有一个静态呈现来自数据库或外部网站的帖子的页面,我们希望API端点能够在同一时间返回状态完全相同的帖子,只返回JSON。

我相信API路由没有这种情况

您可以做的是在请求
getStaticProps
中的数据后,将帖子保存到磁盘或外部存储器上的某个文件,然后将此文件用作api路由处理程序的数据源,类似于:

export const getStaticProps = async () => {
  const posts = await getPosts();

  saveSnapshot(posts);

  return {
    props: { /* ... */ }
  }
}
API处理程序:

export default async function handler(req, res) {
  const posts = await getPostsFromStorage();

  res.status(200).json(posts)
}
需要注意的一点是,根据应用程序的服务方式,此文件可能不会在
getStaticProps
和api处理程序之间持久化

例如,如果您使用的是常规VPS,它将被持久化,因为您可能在同一服务器和环境中构建和运行应用程序

但如果您使用的是一些无服务器的东西,那么您的api处理程序可能会在不同的环境中运行,并且无法访问构建文件,那么您可能需要使用外部存储