使用gatsby和netlify在构建时获取api数据后在客户端上持久化api数据

使用gatsby和netlify在构建时获取api数据后在客户端上持久化api数据,gatsby,netlify,jamstack,Gatsby,Netlify,Jamstack,我对盖茨比和奈特利菲很陌生,但我有一个问题在别处找不到答案,可能是因为这是一个错误的方法 我正在为一个客户端构建一个天气应用程序,该客户端需要显示最后一天/周/月数据的动画视图,这需要以不同的分辨率向天气API发出多个请求,然后以设置间隔将其插入到可视化中 我没有在客户机上发出所有这些请求,而是想到,我可以在构建时通过预定的构建获取所有数据,并每天使用这些更新的数据静态地为页面提供服务,这将节省对API的敲打并降低成本 问题是gatsby假设您希望使用获取的数据生成html并使用createPa

我对盖茨比和奈特利菲很陌生,但我有一个问题在别处找不到答案,可能是因为这是一个错误的方法

我正在为一个客户端构建一个天气应用程序,该客户端需要显示最后一天/周/月数据的动画视图,这需要以不同的分辨率向天气API发出多个请求,然后以设置间隔将其插入到可视化中

我没有在客户机上发出所有这些请求,而是想到,我可以在构建时通过预定的构建获取所有数据,并每天使用这些更新的数据静态地为页面提供服务,这将节省对API的敲打并降低成本

问题是gatsby假设您希望使用获取的数据生成html并使用createPages,但这里我只想将数据作为json存储在js包中,以便在客户端上呈现


有没有一种方法可以将构建时获取和格式化的数据放入json或类似格式中,并静态地在客户端上呈现?

您用jamstack标记了这个问题,并且您的方法正好适合这种方法

有没有办法将构建时获取并格式化的数据放入 json或类似文件,并在客户端上静态呈现

  • 构建显示天气数据的React代码
  • 构建您的天气数据json
  • 仅使用天气数据json中的变量
  • 简单的例子:

    import data from "./data/weatherData.json"
    
    const WeatherApp = () => {
      return (
        <Layout>
          <h1>{data.title}</h1>
          <div>{data.rain}</div>
          <div>{data.temperature}</div>
        </Layout>
      );
    };
    
    从“/data/weatherData.json”导入数据
    const WeatherApp=()=>{
    返回(
    {data.title}
    {data.rain}
    {data.temperature}
    );
    };
    
    为了填充天气数据,您可以构建一个复杂的GraphQL查询,以您需要的方式获取所有数据


    另一种方法是使用AWS lamba或类似的无服务器免费服务构建您自己的API,并使用它提供您的天气数据。这样,您就不需要触发盖茨比构建

    嗨,盖茨比文档有一系列if-API调用,您可以在构建/启动过程的不同部分进行连接。谢谢你的回复。我很放心,我现在说的是对的,你最后的评论是我没有想到的。我计划使用Netlify函数为实时数据提供服务,并处理api凭据,这样就可以创建一个单独的函数来组合历史数据,尽管这只会由自动每日构建过程调用,所以在构建时将其与gatsby组合在一起可能会有相同的区别。。不过还是要考虑一下。干杯到目前为止,我都很喜欢JAMStack,太棒了!您可以通过单击复选标记接受此答案以解决您的问题,这样人们就不会偶然发现您已解决的问题。=)很酷,所以我的下一个问题是针对Netlify的,但为了以防万一,我将在这里添加:现在我已经创建了一个Netlify lambda函数,用于获取构建所需的数据。我如何确保它在构建时可用?在我看来,Netlify在处理functions文件夹之前运行build,因此在构建时端点不可用于从中提取数据。。