npm 包 @tipe/graphql-apollo-errors 使用教程

阅读时长 6 分钟读完

前言

GraphQL 是一个基于类型和字段的查询语言,它允许我们以一种简洁、强类型和可理解的方式来描述和查询 API 数据。然而,GraphQL 本身不包含错误处理方案,这就需要我们自己来处理错误。一个很好的解决方案是使用 @tipe/graphql-apollo-errors 这个 npm 包。本文将详细介绍如何使用这个包来处理错误。

安装

首先,我们需要在项目中安装 @tipe/graphql-apollo-errors 包。可以使用 npm 或者 yarn 进行安装:

使用

错误类型

@tipe/graphql-apollo-errors 支持以下五种错误类型:

  • BAD_USER_INPUT
  • UNAUTHENTICATED
  • FORBIDDEN
  • NOT_FOUND
  • INTERNAL_SERVER_ERROR

集成

首先,需要引入两个包:

接下来,使用 createError 函数来创建错误:

createError 函数的第一个参数为错误类型,可以是上面列出的五种之一。第二个参数为一个对象,包含错误信息和可选的数据。这里我们自定义了一个 myError

接下来,在 GraphQL Resolver 中使用 ApolloError 包裹错误即可:

上面的代码中,我们在 Resolver 中抛出了 myError,然后用 ApolloError 包裹并抛出。这个错误会被 Apollo Server 捕获,并返回给客户端。

错误处理程序

我们可以定义错误处理程序来捕获错误并进行自定义处理。首先需要定义错误捕获函数:

这个函数接收一个错误对象,并根据错误类型进行处理。在这里,我们为 BAD_USER_INPUT 添加了特殊处理。其余的错误类型,我们将其打印至控制台。

接下来,在 Apollo Server 配置中使用错误处理程序:

可以看到,我们将 handleErrors 函数传给了 formatError。这个函数会在 Apollo Server 捕获到错误时调用。

完整示例

接下来,我们来看一个使用 @tipe/graphql-apollo-errors 的完整示例。

首先,我们定义了 createUser mutation:

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

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

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

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

在这个 mutation 中,我们首先判断名字是否已经被使用,如果被使用则抛出了一个 BAD_USER_INPUT 类型的错误。

接下来我们在 Schema 中定义这个 mutation:

为了测试这个 mutation,我们来定义一个测试 Query:

下一步,我们需要定义错误处理程序:

最后,在 Apollo Server 启动时添加这些代码:

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

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

现在,当我们尝试创建已有的用户时,就会得到如下错误:

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

这个错误符合我们的预期,我们成功地使用了 @tipe/graphql-apollo-errors,提升了我们的错误处理体验。

总结

以上是本文介绍的 @tipe/graphql-apollo-errors 包的使用教程。本文从安装、使用和错误处理程序入手,详细介绍了如何使用这个包来处理错误,希望对大家有所帮助。

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

纠错
反馈