如何在 GraphQL 代码中处理关系请求的方式

阅读时长 4 分钟读完

在现代 Web 应用程序中,数据关系变得非常复杂。 对于应用程序开发人员来说,处理这些请求变得更加复杂,因为应用程序的数据层需要处理一系列嵌套资料。 在这种情况下,GraphQL 是一种非常有用的工具,它可以帮助我们处理数据关系请求。

GraphQL 的优势

GraphQL 具有以下优势,可以帮助我们在处理数据关系时获得更好的结果:

更精确的控制

GraphQL 允许您根据客户端要求的内容精确控制受到影响的数据。 这意味着如果客户端只需要一些关系数据,则可以通过 GraphQL 中的查询来检索只有这些关系数据。

较少的往返次数

GraphQL 可以减少往返请求次数。 数据关系可能需要多次请求才能获得所需结果。 通过 GraphQL,你可以一次获取所有需要的信息,避免不必要的往返请求。

保留一致的 API

GraphQL 允许您使用自己的 API 服务器。 这降低了使用 API 服务器的工程师遭受更改影响的可能性,从而保留了一致的 API。

如何在 GraphQL 中处理关系请求

定义类型

在 GraphQL 中,一个 type 表示一个对象。你需要为你的数据建立一种类型,以帮助你组织数据,使数据查询更简化。 在定义类型时,你可以建立关系,以帮助你处理嵌套关系。

-- -------------------- ---- -------
---- ---- -
  --- ---
  ----- -------
  ------ -------
  ------ --------
  ---------- --------
-

---- ---- -
  --- ---
  ------ -------
  ----- -------
  ------- -----
-

在上面的代码中,我们定义了两种类型 UserPost。在 User 类型中,我们定义了一个包含 Post 类型的数组的字段,并使用 ! 表示它不会返回空值。 在 Post 类型中,我们定义了一个 author 字段,它是一个 User 类型,表示一个作者与一篇文章之间的关系。

解决响应

当应用程序需要查询/请求数据时,GraphQL 将查询字符串解析为执行计划,并将其转换为响应。这是一个 GraphQL 查询的示例:

-- -------------------- ---- -------
-
  -------- ---- -
    --
    ----
    -----
    ----- -
      -----
      ----
    -
  -
-

你可以在开始执行之前预期结果对象的形状,所以你的代码将非常适合你的应用程序逻辑和查询结构。在解决响应时,你可以指定每个字段与那个函数匹配。 下面是一个处理上面查询的函数的示例:

-- -------------------- ---- -------
-------- ------------------- ----- -------- ----- -
  ----- -- - --------
  ----- ---- - ----------------
  
  ----- ------ - -
    --- --------
    ----- ----------
    ------ -----------
    ------ ------------------- -- --
      ------ -----------
      ----- ---------
    ---
  -

  ------ -------
-

----- --------- - -
  ------ -
    ----- -----------
  -
--

在上面的代码中,我们定义了一个函数 resolveUser,该函数将接收 parent,args,context,info 四个参数。 我们使用 args 中的 id 来获取 user 对象。

以可读格式输出响应

GraphQL 查询需要指定返回的字段。你可以使用一个优秀的库GraphQL插件 GraphQL-Yoga来处理所有这些事情。GraphQL-Yoga 将响应模板和模式转换为输出字符串,并检查模式是否正确。以下是我们如何使用 GraphQL-Yoga 处理上面的查询:

在以上代码中,我们创建了一个 GraphQL Yoga 服务器,我们添加了需要执行的架构和解析器。

总结

以上是在 GraphQL 代码中处理关系请求的方式。 我们学习了有关 GraphQL 的优势以及如何在 GraphQL 中处理数据关系。 我们还学习了如何定义类型以及如何解析响应。 如果你正在开发基于数据关系的 Web 应用程序,请考虑使用 GraphQL。GraphQL 不仅可以将数据组织在一起,而且还可以帮助你更有效地查询数据。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6480044748841e9894f864cd

纠错
反馈