F1 GraphQL:终极 GraphQL API,获取 Formula 1 数据

发布: (2026年1月10日 GMT+8 04:16)
8 min read
原文: Dev.to

I’m happy to translate the article for you, but I need the text you’d like translated. Could you please paste the content (or the portion you want translated) here? I’ll keep the source line and all formatting exactly as you’ve requested.

Introduction

F1 GraphQL 是一个开源项目,通过 GraphQL 将整个一级方程式赛车的历史呈现在您指尖。无论您是赛车爱好者还是开发者,这个 API 都提供了一种灵活、高效且对开发者友好的方式来访问全面的 F1 数据——不受传统 REST API 的限制。

生产环境 URL

接口URL
主站点
GraphQL Yoga(GraphiQL)
Apollo Server(Apollo Sandbox)

🚀 关键特性

双 GraphQL 引擎

  • GraphQL Yoga – 集成的 GraphiQL 界面,可实时进行查询实验。
    Access:

  • Apollo Server – Apollo Sandbox,提供高级开发者工具和自省功能。
    Access:

这种双引擎方式让你可以选择最适合工作流的环境。

完整的 F1 数据库

  • 车手信息与统计
  • 车队与车厂数据
  • 赛事成绩与排位信息
  • 赛道详情
  • 赛季统计
  • …以及更多

该数据集覆盖了整个一级方程式历史,适用于历史分析、可视化以及各种应用。

自动化每日更新

GitHub Actions 工作流每天使用 F1DB 源刷新数据库,确保数据准确且保持最新,无需人工干预。

现代技术栈

  • Node.jsTypeScript – 类型安全,极佳的开发体验
  • Prisma ORM – 高效的数据库访问
  • GraphQL YogaApollo Server – 两个 GraphQL 端点
  • GQLoom – 模式工具
  • GitHub Actions – CI/CD 与自动化数据刷新

示例查询

# Get the first 10 drivers
query Drivers {
  findManyDriver(take: 10) {
    id
    firstName
    lastName
    name
    fullName
    gender
    dateOfBirth
  }
}
# Get the first 50 races
query Race {
  findManyRace(take: 50) {
    year
    turns
    laps
  }
}

在项目中使用 API

使用 fetch

// Using fetch
async function fetchF1Data() {
  const response = await fetch('https://f1-graphql.davideladisa.it/graphql', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      query: `
        query Drivers {
          findManyDriver(take: 10) {
            id
            firstName
            lastName
            name
            fullName
            gender
            dateOfBirth
          }
        }
      `,
    }),
  });

  const data = await response.json();
  return data;
}

使用 Apollo Client

import { ApolloClient, InMemoryCache, gql } from '@apollo/client';

const client = new ApolloClient({
  uri: 'https://f1-graphql.davideladisa.it/graphql',
  cache: new InMemoryCache(),
});

client
  .query({
    query: gql`
      query Drivers {
        findManyDriver(take: 10) {
          id
          firstName
          lastName
          name
          fullName
          gender
          dateOfBirth
        }
      }
    `,
  })
  .then(result => console.log(result));

本地运行项目

# Clone the repository
git clone git@github.com:FrancoStino/F1-GraphQL.git

# Enter the project folder
cd f1-graphql

# Install dependencies
yarn install

# Set up environment variables
cp .env.example .env
# Edit .env with your database connection string

# Generate Prisma client & build
yarn build

# Start the development server
yarn dev

当服务器运行时,您可以访问:

EndpointURL
Landing page
GraphQL Yoga
Apollo Server

Development Tips

  • 使用 GraphiQLApollo Sandbox 界面进行快速查询开发和测试。
  • 浏览生成的模式文档,以发现所有可用的类型和字段。
  • 启用缓存(例如 HTTP 缓存头或 Apollo Client 缓存),以提升生产环境的性能。
  • 为生产级应用实现健壮的错误处理和日志记录。

为什么 F1 GraphQL 很重要

以前,获取完整的 F1 数据需要在多个来源之间切换,处理不一致的 API,或手动录入数据。F1 GraphQL 通过提供:

  1. 所有一级方程式数据的单一真实来源
  2. 灵活的查询——只请求你需要的内容,毫无多余。
  3. 通过自动每日刷新保持信息最新
  4. 对开发者友好的工具,同时支持 Yoga 和 Apollo 接口。

尽情构建下一代 F1 应用、仪表盘和可视化吧! 🚗💨

概览

无论您是构建幻想 F1 应用、创建数据可视化,还是仅仅探索这项运动的丰富历史,F1 GraphQL 都为您提供所需的基础。

参与方式

F1 GraphQL 在其 Formula 1 爱好者和开发者社区中蓬勃发展。有许多方式可以贡献:

  • 代码贡献 – 提交 pull request 添加新功能、修复 bug 或改进文档。
  • 问题报告 – 帮助识别并记录 bug 或缺失的功能。
  • 数据校验 – 确保 Formula 1 数据的准确性。
  • 文档 – 改进指南和示例,帮助其他开发者。

欢迎所有贡献,无论经验水平如何。

标准 GitHub 工作流

  1. Fork 仓库。
  2. 创建功能分支。
  3. 进行更改。
  4. 提交 pull request。

社区渠道

  • GitHub Discussions – 加入关于 F1 GraphQL 的讨论。
  • Issue Tracker – 查找开放的 issue 和功能请求进行工作。
  • Examples Repository – 一个社区贡献的示例集合,展示 F1 GraphQL 的实际使用。

使用 F1 GraphQL 构建的示例项目

  • F1 数据可视化仪表盘
  • 赛事预测模型
  • 幻想 F1 应用
  • 历史表现分析工具
  • 提供赛事信息的移动应用

如果您使用 F1 GraphQL 构建了项目,欢迎通过提交到示例仓库或在 GitHub 讨论中提及来分享您的作品。

资源

  • 教程 – 针对常见用例的逐步指南。
  • 查询示例 – 不断增长的有用 GraphQL 查询集合。
  • 模式文档 – 自动生成的可用数据和关系文档。

未来改进

  • Grand Prix 周末的实时比赛数据
  • 高级统计和聚合
  • 额外的数据可视化工具
  • 增强的性能优化

结束语

F1 GraphQL 代表了现代网页技术与一级方程式赛车悠久历史的交汇点。通过 GraphQL 让这些数据可访问,项目为开发者、数据分析师以及 F1 爱好者打开了新的可能性。

如果你对一级方程式数据感兴趣,或想构建利用这些数据的应用,欢迎了解 F1 GraphQL。该项目是开源的,托管在 GitHub 上,采用 MIT 许可证。

准备好用 F1 数据冲刺了吗?
⭐ 在 给仓库加星并系好安全带!

致谢

本指南基于 Davide Ladisa 创建的 F1 GraphQL 项目。项目的所有功劳归原作者所有。如果您喜欢本文,请通过给 GitHub 仓库加星并为其开发做出贡献来支持该项目。

Back to Blog

相关文章

阅读更多 »