npm 包 graphql-central-types 使用教程

GraphQL 是一种现代的查询语言和 API 构建工具,它的优点在于:强类型检查、可组合性、一次获取多个资源和自我文档化。graphql-central-types 是一个 npm 包,它可以帮助开发者更好地使用 GraphQL,提供了许多帮助构建 GraphQL API 的类型定义和解析器。本篇文章将详细介绍如何使用这个 npm 包和它的主要特性。

安装

首先,我们需要使用 npm 在我们的项目中安装 graphql-central-types 包:

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

我们还需要安装 graphql 客户端,如果没有安装的话:

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

使用

graphql-central-types 库提供了一些基础类型定义,类型定义可以是对象、枚举或标量。你可以使用这些类型定义来构建你的 GraphQL schema。下面是一个简单的例子:

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

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

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

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

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

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

在上面的例子中,我们在 typeDefs 中导入了 centralTypes,它将会导入所有被 centralTypes 提供的 GraphQL 基础类型定义,在这个例子中,我们使用 centralTypes 导入了标量类型,它包括了 DateTimePositiveIntNonNegativeIntNonPositiveIntNegativeIntEmailURL。我们在 typeDefs 中定义了一个 Query 类型,它只有一个字段,这个字段将会返回 'Hello world!'。

这是最简单的例子,graphql-central-types 的更多用例将在下面的部分中讲解。

标量类型

在许多情况下,我们需要使用自定义的标量类型。graphql-central-types 包提供了一些标量类型,它们的用法与标准的 GraphQL scalar 类型一样。

DateTime 类型

DateTime 类型是一个包含日期和时间的标量类型。

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

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

在这个例子中,我们定义了一个 date 的查询参数和一个 date 的查询字段。如果我们传入一个 DateTime 类型的参数,我们可以在 resolver 函数中获取到这个参数并将其直接返回。以下是查询的一个例子:

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

PositiveInt 类型

PositiveInt 类型是一个只含正整数的标量类型。如果值为负数或小数,这个类型将会返回一个验证错误。

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

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

在这个例子中,我们定义了一个查询参数 value,它将被转换为 PositiveInt 类型。如果我们传递了一个非正整数的值,GraphQL 将会抛出一个验证错误。以下是查询的一个例子:

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

NonNegativeInt 类型

NonNegativeInt 类型是一个只含非负整数的标量类型。如果值为负数或小数,这个类型将会返回一个验证错误。

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

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

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

在这个例子中,我们定义了一个查询参数 value,它将被转换为 NonNegativeInt 类型。如果我们传递了一个负整数或小数的值,GraphQL 将会抛出一个验证错误。以下是查询的一个例子:

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

NonPositiveInt 类型

NonPositiveInt 类型是一个只含非正整数的标量类型。如果值为正数或小数,这个类型将会返回一个验证错误。

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

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

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

在这个例子中,我们定义了一个查询参数 value,它将被转换为 NonPositiveInt 类型。如果我们传递了一个正整数或小数的值,GraphQL 将会抛出一个验证错误。以下是查询的一个例子:

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

NegativeInt 类型

NegativeInt 类型是一个只含负整数的标量类型。如果值为正数或小数,这个类型将会返回一个验证错误。

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

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

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

在这个例子中,我们定义了一个查询参数 value,它将被转换为 NegativeInt 类型。如果我们传递了一个正整数或小数的值,GraphQL 将会抛出一个验证错误。以下是查询的一个例子:

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

Email 类型

Email 类型是一个邮箱地址的标量类型。

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

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

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

在这个例子中,我们定义了一个查询参数 value,它将被转换为 Email 类型。如果我们传递了一个非邮箱地址的值,GraphQL 将会抛出一个验证错误。以下是查询的一个例子:

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

URL 类型

URL 类型是一个 URL 地址的标量类型。

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

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

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

在这个例子中,我们定义了一个查询参数 value,它将被转换为 URL 类型。如果我们传递了一个非 URL 地址的值,GraphQL 将会抛出一个验证错误。以下是查询的一个例子:

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

枚举类型

在 GraphQL 中,枚举是一组预定义的常量。它们在定义字段时非常有用。graphql-central-types 提供了一些常用的枚举类型。

Weekday 类型

Weekday 类型是一个包含所有星期几的枚举类型。

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

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

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

在这个例子中,我们定义了一个查询参数 day,它将被转换为 Weekday 类型。如果我们传递了一个非星期几的值,GraphQL 将会抛出一个验证错误。以下是查询的一个例子:

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

Currency 类型

Currency 类型是一个包含所有货币代码的枚举类型。

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

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

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

在这个例子中,我们定义了一个查询参数 value,它将被转换为 Currency 类型。如果我们传递了一个非货币代码的值,GraphQL 将会抛出一个验证错误。以下是查询的一个例子:

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

对象类型

GraphQL 中,对象类型是构建 GraphQL schema 的核心。在 graphql-central-types 库中,包括了一些定义对象的类型,包括 ImageAddressPhoneNumber

Image 类型

Image 类型包含一个 URL 和一个可选的 title 和描述。

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

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

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

在这个例子中,我们定义了一个查询参数 value,它将被转换为 Image 类型。其中包括一个 URL 和一个可选的 title 和描述。以下是查询的一个例子:

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

Address 类型

Address 类型包含一个可选的 city、state、country 和 street 字段。

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

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

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

在这个例子中,我们定义了一个查询参数 value,它将被转换为 Address 类型。其中包括一个可选的 city、state、country 和 street 字段。以下是查询的一个例子:

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

PhoneNumber 类型

PhoneNumber 类型表示一个电话号码,包括国家代码和区号。

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

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

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

在这个例子中,我们定义了一个查询参数 value,它将被转换为 PhoneNumber 类型。其中包含了国家代码、区号和电话号码。以下是查询的一个例子:

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

总结

graphql-central-types 是一个很有用的 npm 包,它包括了许多帮助我们构建 GraphQL API 的类型定义和解析器。在本篇文章中,我们介绍了如何使用基础类型和自定义类型、如何使用枚举和对象类型,我们还给出了一些例子来帮助你更好理解它的使用方法。如果你正在使用 GraphQL 构建 API,那么 graphql-central-types 是一个不错的选择。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/600668edd9381d61a3540ca2


猜你喜欢

  • npm 包 laragle-translate 使用教程

    在前端开发中,常常需要国际化的支持,以便网站或应用可以支持多语言。其中,laragle-translate 是一个非常实用的 npm 包,可以方便地将多语言的内容进行管理和翻译。

    3 年前
  • npm 包 react-native-share-kit 使用教程

    在现代的移动应用程序中,组件之间的共享是至关重要的。因此,一个好的分享模块是必须的,而 react-native-share-kit 就是为 react native 应用程序开发的一个易于使用、功能...

    3 年前
  • npm 包 savings-ionic-test 使用教程

    简介 savings-ionic-test 是一个基于 Ionic 框架的测试工具,方便前端开发人员进行端到端测试。本文将介绍如何使用 savings-ionic-test 进行测试。

    3 年前
  • npm 包 justows.conn.log 使用教程

    在前端开发中,日志是非常重要的一部分,它可以帮助我们发现问题、跟踪程序运行状态以及记录重要信息。而 justows.conn.log 就是一款强大的 npm 日志库,它可以帮助我们快速记录前端应用的各...

    3 年前
  • npm包 @leeroy/react-native-parallax-scroll-view 使用教程

    在React Native应用中,有时需要使用一个带有视差滚动特效的滚动视图,这时候就可以使用npm包 @leeroy/react-native-parallax-scroll-view了。

    3 年前
  • npm 包 cloud-mdm-console-node 使用教程

    简介 cloud-mdm-console-node 是一个 Node.js 模块,用于与华为云终端管理服务进行交互。它提供了一组简单的 API,使您可以轻松创建、查看和管理终端管理数据。

    3 年前
  • npm 包 crypto-containers 使用教程

    在进行前端开发的过程中,安全性通常是一个至关重要的问题。为了保证数据的安全,我们需要对数据进行加密和解密。而 npm 包 crypto-containers 可以帮助我们轻松地实现前端的加密和解密操作...

    3 年前
  • npm 包 @wasong/socket-chat 使用教程

    在现代网页应用中,实时的聊天功能已经成为了必备的特性之一。为了方便开发者,@wasong/socket-chat 是一个专门用于构建实时聊天应用的 Node.js 包,它支持群聊和私聊,可以轻松地集成...

    3 年前
  • NPM 包 flave 使用教程

    什么是 flave flave 是一个轻量级、易于使用、语法高亮的 Markdown 渲染器,它提供了多种渲染器类型和自定义 CSS 的能力,是一个非常适合用于前端项目开发的 NPM 包。

    3 年前
  • npm 包 gf-combination-js 使用教程

    介绍 gf-combination-js 是一款基于 JavaScript 编写的 npm 包,旨在帮助前端开发者轻松实现将一个数组中的元素进行排列组合的操作。gf-combination-js 简单...

    3 年前
  • npm 包 stylus-dashi 使用教程

    前言 在前端开发中,CSS 是非常重要的一环,而 stylus 是一个非常强大的 CSS 预处理器,但在使用 stylus 时,我们难免会遇到一些烦人的问题,极大地拖慢了开发进度,这时候我们可以使用 ...

    3 年前
  • npm 包 @jasonmit/ember-let 使用教程

    前言 在前端开发中,我们经常遇到需要使用变量的情况,比如设置页面标题、控制页面状态等。而在 Ember.js 框架中,使用最多的变量声明方式是 Component 的属性。

    3 年前
  • npm 包 conditional-ga 使用教程

    npm 是一款广受欢迎的 JavaScript 包管理器,它基于命令行操作,能够方便地帮助开发者安装、升级和删除 JavaScript 包,从而保证了项目的可维护性和版本控制。

    3 年前
  • npm 包 trc-common-develop 使用教程

    什么是 trc-common-develop? trc-common-develop 是一个针对前端开发的 npm 包,它提供了一些常见的工具类函数和组件,方便开发者进行快速开发和部署。

    3 年前
  • npm 包 color-json-cli 使用教程

    简介 Color-json-cli 是一款基于 Node.js 的 npm 包,可用于在控制台中输出彩色的 JSON 字符串。在前端开发中,我们经常需要处理 JSON 数据,但是在命令行中以纯文本形式...

    3 年前
  • npm 包 itl-css-utility_classes 使用教程

    前言 在前端开发中,我们常常需要使用一些工具类来辅助样式的编写,比如常见的 clearfloat、text-center、margin-auto 等。而 itl-css-utility_classes...

    3 年前
  • npm 包 swively 使用教程

    简介 Swively 是一个能让你在页面上快速生成 360 度旋转的图片的 npm 包。使用 swively 可以方便、快捷地创建这样的交互效果,提高网页设计的美感和吸引力。

    3 年前
  • npm 包 emoji-sheriff 使用教程

    在前端开发中,我们经常需要使用到 emoji 表情来丰富网站或应用的交互体验。为了更方便地使用 emoji,我们可以使用 npm 包 emoji-sheriff,它不仅提供了丰富的 emoji 表情,...

    3 年前
  • npm包 Lassy使用教程

    前言 Lassy 是一个基于 TypeScript 语言的语法分析器,通过 Lassy 可以快速分析代码结构、获取变量的类型及引用信息,它还可以准确的推断代码相关属性的定义信息,是现代前端开发的必备工...

    3 年前
  • npm 包 tapfiliate 使用教程

    tapfiliate 是一个 npm 包,它提供了一个简单易用的接口,用于与 tapfiliate 的 API 进行交互。tapfiliate 是一款基于 SaaS 的营销接触点追踪和管理工具,拥有众...

    3 年前

相关推荐

    暂无文章