概述
让我们来了解一下我们在本系列中将使用的项目。在本课中,我们将
- 检查我们目前的 API 和我们的未来计划 🍲🥘
- 了解GraphOS如何帮助简化和加速应用程序开发
我们目前的 API...
推出 诗意美食 🍽️,这是面向富有冒险精神的厨师和美食家爱好者的 GraphQL API!
是否曾经苦恼于不知道晚餐做什么,没完没了地浏览视频和网站,然后越来越饿?
诗意美食让你可以尝试由 AI 生成的食谱,这些食谱包含充满诗意的说明,以及美味(或可能惨不忍睹)的结果。有了极其详细且有时有用的说明,烹饪从未如此有趣!
API 架构
诗意美食 API 使用 JavaScript 编写,并使用 Apollo Server。代码库目录如下所示:
📦 poetic-plates-api┣ 📂 src┃ ┣ 📂 datasources┃ ┣ 📂 resolvers┃ ┣ 📄 index.js┣ 📄 package.json┣ 📄 schema.graphql┗ 📄 README.md
如果您以前构建过 GraphQL API,那您可能对此很熟悉!它是一个 GraphQL 服务器,具有架构、解析器和 数据源。以下是重要文件的快速概览:
schema.graphql
:定义类型的架构和 字段,这些字段描述了食谱内容。resolvers
:定义 resolver函数以用于架构中的 字段。datasources
:在真实世界应用程序中,这个 数据源可能会连接到 REST API 或数据库,但我们处于教程层面,所以使用同一目录中的 JSON 文件中的硬编码数据。index.js
:创建一个ApolloServer
实例,它使用上述三个组件。
您无需克隆存储库,但您可以自由地浏览代码库,如果您好奇,可放心浏览。
已将 Poetic Plates 托管在 https://poetic-plates-recipes-api.herokuapp.com/处,准备好接收查询并返回数据!
想要尝试一下吗?打开一个新终端,并从主页粘贴此 curl 命令。我们可以调整 查询以询问随机食谱的名称。
curl --request POST \--header 'content-type: application/json' \--url 'https://poetic-plates-recipes-api.herokuapp.com/' \--data '{"query":"query GetRandomRecipe {\n randomRecipe {\n name\n readyTime\n servings\n ingredients {\n text\n }\n }\n}"}'
然后我们将获得数据返回:一个随机食谱,其中包含烹饪所需时间和所需食材的信息!
我们如何使用 Poetic Plates
目前,该 API 是一组小食谱。我们可以执行以下操作
- 要求提供一个随机食谱
- 要求提供其数据库中食谱的完整列表
- 要求提供最近添加的食谱
- 查看食谱的配料、烹饪时间、说明等
但我们对 Poetic Plates 有宏伟的计划!我们设想一个未来的愿景,用户可以在其中添加他们自己的食谱、创建合集且分享他们的想法。我们可以提供有关每种配料的更多详细信息,或根据已放入食品柜中的物品推荐特定食谱。可能性是无限的!
在我们致力于这些新功能并拓展我们的架构时,我们还希望保持我们的当前功能平稳运行。我们希望跟踪我们 API 的运行状况,并监控以下内容:哪些 字段 未被使用,哪些是请求最多的 操作,或者 查询 的哪些部分太慢。使用它的客户端遇到什么问题?我们可以改进哪些方面?
与 GraphOS 协作
GraphOS 帮助我们解决这些问题。
要开始使用 GraphOS,我们将使用其 Web 界面,Studio。有另外两种方式可以连接到 GraphOS: Rover,一个在本地或 CI/CD 管道中使用的命令行界面;以及 Platform API,这是一个 GraphQL API,用于在您自己的应用程序中执行 GraphOS 操作。
在本课程中,我们将主要使用 Studio,因此您需要一个帐户来继续学习!
创建 Apollo 帐户
如果您尚未创建您的 Apollo 帐户,请访问 https://studio.apollographql.com/signup。您可以使用电子邮件和密码注册,或使用现有的 GitHub 帐户注册。您还可以创建自己的组织。
完成后,您就一切准备就绪,可以使用 GraphOS。
练习
要点
- Apollo GraphOS帮助您构建、管理和扩展您的 GraphQLAPI。
- 与 GraphOS交互有三种方式:Studio、Rover和平台 API。
- 在本教程中,我们将使用一个名为 Poetic Plates 的现有 API 🍽️,这是为冒险的厨师和美食家提供的 GraphQL API!
接下来
好了,我们已准备好将 Poetic Plates 提升到一个新的水平。GraphOS将把我们的 API 转换为联邦图。如果您不熟悉这个联邦架构,别担心!我们将在下一课中涵盖所有内容。
分享您对本课程的疑问和意见
您的反馈有助于我们进行改进!如果您遇到困难或困惑,请告诉我们,我们将帮助您解决。所有评论都是公开的,并且必须遵循 Apollo 行为准则。请注意,已解决或已解决的评论可能会被删除。
您需要一个 GitHub 帐户才能在下面发布。没有一个帐户吗? 改用我们的 Odyssey 论坛发帖。