GraphQL 服务端开发最佳实践 - 避免常见错误

阅读时长 5 分钟读完

前言

GraphQL 是一种新兴的服务端开发技术,它提供了一种新的方式来定义 API 和查询数据,它可以让前端开发者更灵活地获取必要数据,并带有更好的错误处理和性能。与传统的 REST API 相比,GraphQL 更易于维护和扩展。

但是,GraphQL 的服务端开发方式并不直观,尤其是对于初学者来说很容易犯一些常见错误。本文将介绍 GraphQL 的最佳实践,以帮助服务端开发者避免这些错误。

定义好 Schema

GraphQL 的核心是 Schema,因为它定义了所有可用的类型和查询。在编写 Schema 时,一定要确保它与您的业务需求相匹配,并确保所有字段都具有明确的类型。因为一旦 Schema 定义好了,就很难更改它。

以下是一个简单的示例:

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

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

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

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

处理字段和类型

在编写 Schema 时,应该详细考虑字段和类型。理想情况下,需要使用使用标量类型和自定义类型定义字段和查询。但是,在某些情况下,需要使用特殊类型,例如 Time, JSON, URI 或 Email 等。

例示:

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

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

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

处理查询

查询是最常见的 GraphQL 操作之一。在处理查询时,一定要确保您正在处理的查询是有效的,而且类型匹配。

查询不仅应返回预期的结果,而且还应该具有适当的性能。因此,应该避免执行耗时的查询,特别是在没有缓存机制的情况下。有时候,可以通过优化查询来提高响应速度,例如使用分页查询,只返回必要的字段等。

下面是一个查询分页的示例:

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

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

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

处理突变

突变是修改 GraphQL 数据的唯一方法。在处理突变时,必须确保它们对配置的 Schema 没有任何负面影响。

突变应该只修改自己关注的字段,避免对多个字段同时进行更改。如果需要对多个字段进行更改,则应该一次性进行,而不是逐个进行。

以下是一个修改图书的突变示例:

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

使用 DataLoader 处理数据批量加载

GraphQL 通常在一个请求中会获取多个数据集,因此,在处理数据加载时,很容易出现性能问题。为了减轻这种负担,可以使用 DataLoader。它可以减少重复的查询,并提高查询的缓存效率。

下面是一个使用 DataLoader 的示例:

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

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

---

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

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

---

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

总结

GraphQL 是一种强大、灵活的服务端开发技术,但也需要处理错误和优化。在本文中我们提到了定义好 Schema, 处理字段和类型, 处理查询, 处理突变, 使用 DataLoader 处理数据批量加载等 GraphQL 最佳实践。它们是保持代码质量高和性能优秀的关键。希望这篇文章能够为您提供一些帮助,并帮助您更好地利用 GraphQL。

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

纠错
反馈