如何解决next.js:相当于 API 端点的 getStaticProps()?
在 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 处理程序可能会在不同的环境中运行并且无法访问构建文件,那么您可能需要为其使用外部存储。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。