解析 GraphQL 的 Schema 第三步:Arguments

阅读时长 4 分钟读完

在 GraphQL 中,Arguments 是定义在 Field、Directive 和 Fragment Spread 等属性上的一种对象类型。它们可以接收值,来限制查询的结果范围、做运算、过滤,实现更加灵活和有逻辑的查询。

Arguments 的基本格式

Arguments 被定义在括号 ( ) 内,通常在 Field 上,如下所示:

  • field 表示查询字段的名称。
  • argument 表示 Arguments 的名称。
  • value 表示 Arguments 的值,可以是字符串、数字、布尔值、可选类型、枚举等。

在 Schema 中,Arguments 的定义通常包含以下属性:

  • name:Arguments 的名称。
  • description:对 Arguments 的描述,可以通过 """ """ 来多行输入。
  • type:Arguments 的类型,可以是 String、Int、Float、Boolean 以及自定义类型等。

如下是一个简单的 Schema 示例:

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

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

在 Query 类型中,定义了一个 user 的查询字段,它接收一个名为 id 的 Arguments,类型为非空的整数 Int!。在 User 类型中,定义了 idnameage 三个具有不同类型的字段,来描述用户的信息。

Arguments 的使用示例

在实际应用中,Arguments 可以用来实现查询的多样性和筛选。以一个用户比较系统为例,我们可以根据姓名、年龄、性别等因素来查询用户,并对查询结果进行排序、分页等操作。

首先是查询用户列表,可以使用一个 users 查询字段来实现,它包含了两个 Arguments:pageperPage,分别表示当前页数和每页数据的数量:

然后是查询用户信息,我们可以通过姓名、年龄、性别等因素来查询用户,以一个 user 查询字段为例:

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

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

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

这里我们定义了四个具有不同 Arguments 的查询字段,分别实现了根据名称、年龄范围和性别来查询用户的功能。Gender 类型是一个枚举类型,定义了两个值:MALE 和 FEMALE。

最后是对查询结果进行排序和分页的功能,我们可以通过常见的 orderBypagination 两个 Arguments 来实现,如下所示:

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

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

这样,我们就可以根据需要来灵活地查询用户信息,实现更加强大和灵活的功能了。

Arguments 的注意事项

在使用 Arguments 时,我们需要注意以下事项:

  • Arguments 的值有时候需要验证和转换,可以在 resolvers 中进行处理。
  • Arguments 有一些内置的类型,包括 Scalar、Enum、List 和 Input Object 等。我们也可以自定义 Arguments 类型。
  • Arguments 的名称和类型对于运行时的查询来说是必要的,这意味着我们需要对 Schema 进行类型检查和文档化,以便更好地维护和管理。

总结

在本文中,我们介绍了 Arguments 在 GraphQL Schema 中的定义和使用方式。作为查询时的一个重要组成部分,Arguments 可以帮助我们实现更加灵活和智能的查询。如果你是一名前端开发人员,学习和掌握 GraphQL 的 Arguments 将对你的开发工作有所帮助,推荐进一步深入学习。

参考链接

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

纠错
反馈