在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处理程序可能在不同的环境中运行,并且无法访问构建文件,那么你可能需要使用外部存储。