处理 GraphQL 神秘错误的注意点

处理 GraphQL 神秘错误的注意点

GraphQL 是一种用于 API 开发的查询语言,它可以轻松地处理多个数据源的数据查询,并严格控制返回的数据结构。尽管 GraphQL 看起来非常简单明了,但在实践中你可能会遇到各种奇怪的错误,它们可能会使您捉摸不透。在本文中,我们将讨论 GraphQL 错误中的一些常见问题及其处理方法。

错误处理

在实际开发中,程序员需要确保查询能够正确处理错误。特别是在传输过程中,由于网络问题、服务器错误、代码语法错误等一系列问题,查询可能会失败。GraphQL 允许返回一些错误信息以向客户端开发人员提供有用的操作信息,这是非常有帮助的。

错误处理可以通过约定来实现。GraphQL 易于构建这样的约定,因为所有字段都有类型。错误可以返回特定的类型,以明确指示错误。下面是一个 GraphQL 查询示例,其中包含一些错误信息:

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

其结果如下:

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

使用这种约定,客户端代码可以轻松地使用类似下面的示例代码来处理错误:

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

错误分析

GraphQL 最常见的错误是类型错误。该错误通常指示您正在尝试查询不存在的字段。例如,如果您查询了一个 User 对象,但是 User 对象没有一个 status 字段,则会出现类型错误。在这种情况下,GraphQL 的错误输出将包含以下内容:

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

此错误的位置信息将显示在查询中。这可以帮助您非常快速地定位错误。

另一个常见的错误是查询参数类型错误。如果您查询持有非字符串值的字段,并且该字段需要字符串输入,则会出现此错误。例如,如果 User 的 id 字段是一个字符串,但是您查询了一个数字,则会出现此错误。在这种情况下,GraphQL 的错误输出将包含以下内容:

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

从 GraphQL 的错误输出可以看出,您传递的参数为数字,而 GraphQL 函数需要一个字符串。这将让您更快地找到问题所在。

还有一个比较难以调试的错误是未识别的标识符。例如,在使用 Apollo 客户端时,可能会出现以下错误:

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

此错误通常是由于您尚未正确定义该 fragment 或者定义了,但没有将其添加至 Schema 中。为了解决此问题,请检查文件是否存在且拼写正确。如果文件存在,请检查文件是否在 GraphQL 命名空间中以及是否在 Schema 中定义后再次运行查询。

结论

GraphQL 提供了一种方式来监视和处理查询中的错误。约定的使用使错误处理和调试变得更加容易,同时提高了 API 的可扩展性。本文介绍了几种 GraphQL 查询中的常见错误及其处理方法。希望这些技巧能够帮助您更有效地调试和设计 GraphQL API。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/673585920bc820c5824ee440