|
Post by account_disabled on Jan 29, 2024 9:47:06 GMT
为移动和 Web 应用程序设计 API 已成为当今一个非常常见的问题。自十年前智能手机的爆发(以及随之而来的移动应用程序的爆发)以来,REST API 已成为应用程序服务器和客户端之间交换数据的主要标准。 开发 API 时遇到的最大问题之一是后端返回给客户端的数据的结构和粒度。假设您正在构建一个类似 Twitter 的社交网络,用户可以在其中关注其他用户。在设计 API 时,您可能需要添加端点 ( GET /users/123) 来检索有关特定用户的数据。服务器是否应该在 API 响应中发送有关该用户关注者的数据?或者它应该保持响应非常简单,因为您需要的只是有关该用户的基本数据?如果您的客户需要该用户的完整数据,但只需要其关注者的用户名和个人资料图片怎么办? 现在,您可能正在考虑在调用端点时使用查询参数执行一些技巧,例如GE 然而,我打赌您可以轻松理解这种方法如何成为您和所有其他需要使用您的 API 的工程师的一大头痛来源。 现在想象一下,您的应用程序与 GitHub 或 Facebook 一样复杂,用户、帖子、关系等之间存在交错的数据,令人头疼的问题现在变成了噩梦。 GraphQL是Facebook 几年前在将其主要应用程序迁移到本机应用程序时创建的一种查询语言。Facebook 是非常复杂的数 WhatsApp 号码数据 据架构的一个很好的例子。这就是为什么他们设计了一种更好的方法来处理数据: 让客户端向服务器询问需要什么数据。 回到我们之前的示例,假设我们的移动应用程序想要请求有关某个特定用户的一些数据,但只需要有关他的 20 位第一批关注者的基本信息。发送到服务器的 GraphQL 查询如下所示 在本教程中,我们将了解如何使用 GraphQL 语言和 Ruby on Rails 实现简单的电影数据库 API。 创建项目 --api我们将使用轻量级版本的全栈框架选项来创建 Rails 项目,其中仅包含构建 REST API 所需的内容。 现在将graphqlgem 添加到您的 Gemfile 中: gem 'graphql' 并执行$ bundle install安装gem。 我们现在可以使用 启动应用程序服务器$我们现在有一个非常简单的 Rails 应用程序设置,有两个模型。现在让我们构建实现 GraphQL 模式的 API。 构建 GraphQL 架构 在直接深入代码之前,让我们先讨论一下 GraphQL 规范。我们首先分析将为我们的应用程序实现的以下查询让我们将其分为以下几个部分: 第一个左括号和最后一个右括号内是 GraphQL 查询的主体,也称为根对象或查询对象。该对象有一个字段movie并采用一个参数id。API 负责返回具有指定id. 在这个字段中movie,我们要求标量字段title以及year的集合字段actors。对于最后一个,我们给出一个size参数,指定我们只想要与这部电影相关的前 6 个演员。 最后,我们要求为该name字段中的集合中的每个演员提供单个字段actors。 现在我们已经简要了解了 GraphQL 语言的可能性,我们可以通过定义根查询对象来开始实现根对象可以有两个直接子类型,这是我们在应用程序中定义的两个模型,movie和actor。
|
|