gatsby - 在strapi中启用预览选项
问题描述
如何在不使用 gatsby 云的情况下在strapi(backend)/gatsby(frontend) 中启用预览选项?
我使用了 gatsby cloud,它运行良好。但我希望自己实现这个功能,因为企业的 gatby 云很昂贵。
解决方案
依赖于您的问题的想法有些复杂,需要大量实现。
从字面上看,您需要使用 webhook 在您的环境中触发develop
/build
命令。这在 Strapi 中是可能的,3.x.x
因为它显示在他们的官方文档中,但仍然是一个 beta 功能。
一些 CMS(如 DatoCMS 所做的那样)公开了一个选项来重新加载在每次内容更改中提供的数据,但是对于 Strapi,没有这样的选项,至少在Gatsby 关于 Strapi 的文档中没有很好地记录。
一切都由 Gatsby Cloud 处理(这就是昂贵的原因)但是,另一种可能适合您的方法或解决方法是使用 localhost:8000/___refresh (它仅适用于develop
命令):
如果设置为 true,这将公开一个
/__refresh
能够接收POST
刷新源内容请求的 webhook。只要远程数据发生变化,就可以触发这个暴露的 webhook,这意味着您可以在不重新启动开发服务器的情况下更新数据。您可以在本地触发此端点,例如,在基于 Unix 的操作系统(如 Ubuntu 和 MacOS)上,使用
curl -X POST http://localhost:8000/__refresh
所以基本上,你需要将一个环境变量设置为 true,每个对 localhost:8000/___refresh 的请求都会再次加载内容。要实现它,首先,您需要将开发命令更改为(在您的package.json
):
"develop": "ENABLE_GATSBY_REFRESH_ENDPOINT=true gatsby develop",
注意:从现在开始你需要运行npm run develop
/yarn develop
然后,每个请求localhost:8000/___refresh
都会重新加载您的数据。您可以简单地使用onClick
按钮功能或其他方式来完成此操作。
推荐阅读
- shell - shell中的大制表符分隔文件操作
- html - 如何将两个引导 col div 与左侧的第三个 col div 对齐?
- json - 如何从 JSON 文件中获取特定字段?
- mainframe - 有没有办法将数组传递给外部 REXX 程序?
- android - Android:即使迁移到 Android X,也无法在我的设计中使用 TabLayout
- python - Tkinter:使用 grid() 插入数据?
- python-3.x - 如何在 concat/merge/join 之后的同一天的所有 5 分钟日期时间行中复制每日日期时间值?
- powershell - Powershell 365 - 从通讯组中删除电子邮件
- python - 如何从动物园获取张量流模型的类名
- java - Scala 任务返回映射