npm 包 graphql-json-schema 使用教程

阅读时长 8 分钟读完

GraphQL 是一种用于 API 的查询语言和运行时环境,它使得客户端能够精确地调用 API 所需的数据,而无需过多依赖于服务端的决策。而 graphql-json-schema 是一个快速生成 GraphQL 类型定义的 npm 包。本文将介绍如何使用 graphql-json-schema 包。

安装

安装 graphql-json-schema 包非常简单,只需要运行以下命令:

使用

转换单个 JSON 对象

我们首先来看如何将一个单独的 JSON 对象转换成 GraphQL 类型定义。假设我们有以下 JSON 对象:

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

要将此 JSON 对象转换为 GraphQL 类型定义,我们只需编写以下代码:

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

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

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

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

此代码将输出如下所示的 GraphQL 类型定义:

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

------ ----

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

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

我们可以看到,GraphQL 类型定义包括一个 Query 类型,一个 scalar JSON 类型,以及一个名为 Json 的自定义类型,该类型与我们给出的 JSON 对象结构相对应。

请注意,我们也可以选择将 Json 类型定义作为 mutation 类型的字段。

转换多个 JSON 对象

要将多个 JSON 对象转换为 GraphQL 类型定义,我们可以使用 fromJSONList 方法。假设我们有以下两个 JSON 对象:

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

要将这两个 JSON 对象转换为 GraphQL 类型定义,我们只需编写以下代码:

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

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

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

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

此代码将输出如下所示的 GraphQL 类型定义:

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

------ ----

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

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

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

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

我们可以看到,在这个例子中,GraphQL 类型定义包括一个 Query 类型,一个 scalar JSON 类型,以及一个名为 Json 的自定义类型,该类型与我们给出的 JSON 对象结构相对应。此外,还会包括一个名为 JsonList 的类型,该类型由一个 items 字段和一个 pageInfo 字段组成,用于分页查询多个 JSON 对象。

使用 Schema Directives

schema directives 是 GraphQL 的一项强大特性。使用 graphql-json-schema,我们可以轻松地将 schema directives 应用到我们生成的 GraphQL 类型定义上。假设我们要将 @uppercase schema directives 应用到生成的 GraphQL 类型上,我们可以这样做:

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

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

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

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

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

此代码将输出如下所示的 GraphQL 类型定义:

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

------ ----

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

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

我们可以看到,我们自定义的 uppercase schema directive 被应用到了我们生成的 GraphQL 类型定义中。

结论

此处我们详细介绍了如何使用 graphql-json-schema 包将 JSON 对象转换成 GraphQL 类型定义,并展示了如何使用 fromJSONList 方法在多个 JSON 对象之间进行转换。我们还介绍了如何使用 schema directives 对生成的 GraphQL 类型定义进行自定义。因此,在前端开发中使用 graphql-json-schema 包可以更快、更方便地将多个 JSON 对象转换成 GraphQL 类型定义,同时也能更好地实现分页查询和 schema directives。

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

纠错
反馈

纠错反馈