content-management-system - 从 Next.js 中的 CMS 访问预览 api
解决方案
据我所知,代理没有什么。根据我在 Sanity.io 中使用预览模式的经验,过程如下:
- 在 Next.js 端,您创建一个 API 路由,它可以 a) 在用户浏览器上设置一些启用预览模式的 cookie,b) 根据查询字符串将用户重定向到所需的页面。当Next.js 页面中的数据获取方法 (
getStaticProps
, ) 看到启用该标志时,它们将绕过任何静态生成并在请求时而不是构建时呈现页面。getStaticPaths
preview
https://yourdomain.com/api/preview
- 在 CMS 端,您根据视图中的文档构造预览 URL 查询字符串(并出于安全目的添加令牌字符串)。使用 Sanity,您可以使用插件来帮助您。
function resolvePreviewUrl(document) {
return `https://yourdomain.com/api/preview?slug=${document.slug.current}&token=${process.env.PREVIEW_SECRET}`
}
- 然后在 CMS 端,您可以根据需要使用已解析的预览 URL。您可以创建一个按钮,单击该按钮,打开一个新的浏览器选项卡并将用户带到预览 API 路由,或者创建一个
src
指向预览 URL 的 iframe。
参考: