npm 包 graphql-middleware-typed-arguments 使用教程

阅读时长 10 分钟读完

前言

GraphQL 是一种用于构建 API 的语言,它将 API 定义为类型和字段的集合,而不是固定的端点。GraphQL 的主要优势之一是它允许客户端按需获取所需的数据,而不是返回整个响应。

然而,当我们编写 GraphQL API 时,我们需要验证输入参数并处理错误。要解决这个问题,我们可以使用中间件函数。在这篇文章中,我们将介绍一个 npm 包叫做 graphql-middleware-typed-arguments,它提供了一种轻松处理 GraphQL 输入参数的方法。

什么是 graphql-middleware-typed-arguments?

graphql-middleware-typed-arguments 是一个 GraphQL 中间件,它可以在参数解析过程中自动检查参数的类型,验证参数是否存在,并处理错误。此外,该中间件还提供了可以快速生成 TypeScript 类型的工具函数。

如何使用 graphql-middleware-typed-arguments?

在使用 graphql-middleware-typed-arguments 之前,我们需要先安装和配置 GraphQL。

安装

在项目目录下使用 npm 安装 graphql-middleware-typed-arguments。

配置

在我们的 GraphQL 服务中,我们需要使用 graphql-middleware-typed-arguments 包装我们的解析器。下面是使用 GraphQL.js 的示例:

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

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

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

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

-- ---- --- -------- ---- --- ----------
-----------------------------
  -------
  ----------------- -
    ------ -
      ----- ----------------
        -------------
          --- -
            ----- ------
            ------------ ---- -- -- --- ------
          --
        ---
        --- - -- -- -- -
          -- ---- -------- ---- ---- --- -- -- ---- - ----- ----
          -- ---------- - ---- -------- ----- ---- -- -------- -- --- ------
        --
      --
    --
  --
---
展开代码

在上面的示例代码中,我们首先定义了一个 GraphQL schema。然后,我们在 resolver 函数中使用中间件包装器 applyMiddleware。我们将 typedFields 函数作为第一个参数传递给 applyMiddleware。该函数是 graphql-middleware-typed-arguments 提供的。接下来的参数是我们的 resolver 函数。

在这个例子中,我们定义了一个 user 查询,它需要一个 ID 类型的参数。我们使用 typedFields 函数检查传入的参数是否正确,并对传入参数进行处理。

中间件使用示例

下面,让我们看一个更复杂的例子来演示 graphql-middleware-typed-arguments 的使用。

示例代码

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

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

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

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

-----------------------------
  -------
  ----------------- -
    ------ -
      ----- ----------------
        -------------
          --- -
            ----- ------
            ------------ ---- -- -- --- ------
          --
          ----- -
            ----- ----------
            ------------ ---- ---- -- --- ------
          --
          ------ -
            ----- ----------
            ------------ ---- ----- -- --- ------
          --
        ---
        --- - --- ----- ----- -- -- -
          -- ---- -------- ---- ---- --- -- -- ---- ----- ----- ------ --- -------
          -- ---------- - ---- -------- ----- ---- -- -------- -- --- ------
        --
      --
    --
    --------- -
      ----------- ----------------
        -------------
          ------ -
            ----- -------------
            ------------ ---- ----- ------ --- -------- - ------
          --
          ------------- -
            ----- ----------
            ------------ ---- ---- -- --- ------
          --
          -------------- -
            ----- ----------
            ------------ ---- ----- -- --- ------
          --
        ---
        --- - ------ - ----- ----- - -- -- -
          -- ---- -------- ---- ---- --- -- ------ --- ------- --- ------- -- -------
          -- ---------- - ---- -------- ----- ---- -- -------- -- --- ------
        --
      --
    --
  --
---
展开代码

在上面的代码中,我们定义了一个包含 user 和 createUser 两个操作的 GraphQL schema。

user 操作需要 id、name 和 email 参数。我们在 resolver 函数中使用 applyMiddleware 函数将 typedFields 中间件包装在 resolver 上。如果在客户端传递的参数不符合上述定义,将会抛出 TypedFieldsError 或 MissingFieldsError 错误。

createUser 操作需要 input 参数,并且该参数包含 name 和 email 字段。在 resolver 函数中,我们除了检查 input 这个参数外还需要检查输入的参数 name 和 email。

总结

使用中间件是处理 GraphQL 输入参数的一个非常方便的方法。graphql-middleware-typed-arguments 是一个辅助我们处理 GraphQL 输入参数的 npm 包,它能更好地解决参数验证和错误处理的问题。在应用 GraphQL 开发时,我们应该考虑使用此中间件来增加服务的健壮性,避免出现参数错误等问题,提高项目开发的效率和质量。

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

纠错
反馈

纠错反馈