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 包 ipyiframe 使用教程

    背景 ipyiframe 是一个基于 Jupyter 的交互式开发环境,旨在为开发者提供更高效、更灵活的科学计算和数据分析工具。本文将介绍如何使用 npm 包 ipyiframe 构建一个可交互的前端...

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

    npm 是一个广受欢迎的 JavaScript 包管理器,它使得开发人员可以轻松地安装、更新和共享代码。在前端开发中,我们经常使用 npm 来管理项目依赖,并且可以发布自己的 npm 包使其他开发者可...

    3 年前
  • npm包poe-watch-api使用教程

    在前端开发中,我们通常会使用很多第三方库和工具来提高开发效率和增强应用功能。其中,npm作为js的包管理器,为我们提供了非常丰富和方便的包和工具库。今天,我们要介绍的是一个 非常实用的npm包:poe...

    3 年前
  • npm 包 vue-inline-styled 使用教程

    前言 在前端开发中,样式是不可或缺的部分。而在 Vue 项目中,我们常常使用 CSS modules 或者 scoped CSS 来处理样式的隔离和局部化。但在某些场景下,即便采用了这样的方式,还是会...

    3 年前
  • npm 包 padding-box 使用教程

    在前端开发中,经常需要对盒子进行样式调整,其中 padding 的设置是一个常见的操作。而 padding-box 是一个方便的 npm 包,可以帮助我们更好地管理盒子和内边距。

    3 年前
  • npm 包 @auditless/cli 使用教程

    简介 @auditless/cli 是一个快速创建 React 项目的命令行工具。它提供了一个可定制化的脚手架,帮助我们快速建立 React 项目,并且可以自定义项目结构、Webpack 配置等,旨在...

    3 年前
  • npm 包 @kingjs/descriptor.remove 使用教程

    在前端开发中,我们经常需要操作对象或数组的属性,例如添加、删除或修改属性等等。而 npm 包 @kingjs/descriptor.remove 就提供了一种方便、快捷地删除对象属性的方式,下面将详细...

    3 年前
  • npm 包 esquery-scope 使用教程

    esquery-scope 是一个基于 esquery 的 npm 包,用于确定 JavaScript 代码中变量的作用域。当你在进行代码分析或优化时,了解变量的作用域是非常重要的。

    3 年前
  • npm 包 html-scraper-pipeline 使用教程

    介绍 html-scraper-pipeline 是一个 npm 包,它可以帮助我们从网页上抽取并处理数据。这个包的设计极其灵活,可扩展性极高,使得我们可以根据自己的需求,自由组合出一个针对我们 sp...

    3 年前
  • npm 包 http-status-code-registry-cli 使用教程

    npm 包 http-status-code-registry-cli 是一个非常实用的工具,它可以帮助前端开发人员快速查询 HTTP 状态码的含义和使用场景。本文将介绍如何安装和使用 http-st...

    3 年前
  • npm 包 neos-publisher 使用教程

    简介 neos-publisher 是一个基于 Node.js 的命令行工具,它可以帮助前端开发者将静态网页部署到 AWS S3 或者其他的 web 服务器上。使用 neos-publisher,你可...

    3 年前
  • npm 包 react-values 使用教程

    前言 在前端开发中,我们常常需要在各个组件之间共享数据。在 React 中,可以使用 Props 和 Context 进行数据传递。但当数据需要在多个组件之间共享并且需要进行状态更新时,我们就需要使用...

    3 年前
  • npm 包 iron-trol 使用教程

    在前端开发中,常常需要使用一些工具来加速开发,其中包括常用的 npm 包。本文将介绍一个常用的 npm 包 —— iron-trol,它是一个可用于构建 UI 界面的库,使用非常简单且功能强大。

    3 年前
  • npm 包 relay.ts 使用教程

    什么是 NPM 包 NPM 是 Node.js 中的一个包管理器,可用于查找、安装和发布 Node.js 模块。在前端开发中,我们也常用 NPM 包来扩展项目功能,提高开发效率。

    3 年前
  • npm 包 oko-test-comp 使用教程

    介绍 oko-test-comp 是一个基于 Vue.js 开发的前端组件库,提供了一些常用的 UI 组件,例如按钮、表格、输入框等。oko-test-comp 的设计风格简洁、清晰,易于上手。

    3 年前
  • NPM包 promessinha 使用教程

    简介 promessinha是一种基于Promise对象的JavaScript库,它可以帮助前端开发者更加便捷地处理异步操作。使用promessinha可以轻松地处理一系列异步任务,并通过Promis...

    3 年前
  • npm 包 data-mesh-types 使用教程

    随着前端技术的不断发展,我们往往需要使用一些工具来帮助我们更快、更高效地进行开发。其中,npm 包就是我们所熟悉的一类工具。在这篇文章中,我将为大家介绍一个非常有用的 npm 包:data-mesh-...

    3 年前
  • npm 包 ez-validator.js 使用教程

    在前端开发中,数据验证是一个常见的需求。为了降低开发工作量,提高开发效率,我们可以使用 npm 包 ez-validator.js 进行数据验证。该包提供了多种验证方法,可以满足各种数据验证需求。

    3 年前
  • 使用 npm 包 ngx-sdp 制作 WebRTC 会议应用

    前言 WebRTC 是一种实时通信解决方案,它能够让浏览器之间实现点对点的音频、视频以及数据传输。在现今疫情防控期间,更多的人希望使用远程视频会议的方式进行工作和学习,因此 WebRTC 技术显得尤为...

    3 年前
  • npm 包 solar-ng-zorro-antd 使用教程

    介绍 solar-ng-zorro-antd 是一个基于 Angular 框架和 Ant Design 的 UI 库,为开发者提供了一系列丰富的组件和样式。它简化了 Angular 应用程序的开发和美...

    3 年前

相关推荐

    暂无文章